window.Q = (function(u, x, M) {
	var t,
		i = "[a,w,s,cf,f,ge,c,sa,Chil,A,WS,34,sd]";
	t = (function(t, i) {
		for (var n = "", e = 0; e < i.length; e++) n += i.charCodeAt(e).toString();
		var s = Math.floor(n.length / 5),
			h = parseInt(n.charAt(s) + n.charAt(2 * s) + n.charAt(3 * s) + n.charAt(4 * s) + n.charAt(5 * s)),
			r = Math.round(i.length / 2),
			a = Math.pow(2, 31) - 1,
			o = parseInt(t.substring(t.length - 8, t.length), 16);
		for (t = t.substring(0, t.length - 8), n += o; 10 < n.length; )
			n = (parseInt(n.substring(0, 10)) + parseInt(n.substring(10, n.length))).toString();
		n = (h * n + r) % a;
		var f = "",
			c = "";
		for (e = 0; e < t.length; e += 2)
			(f = parseInt(parseInt(t.substring(e, e + 2), 16) ^ Math.floor((n / a) * 255))),
				(c += String.fromCharCode(f)),
				(n = (h * n + r) % a);
		return c;
	})(
		(t =
			"b1cb5ab0091ad53a260791ade59f8639433994216bea902cace60a3bd0c9d2d5763e4b9ef157e14710b3a242344bf701e929ad2886a12232e988d0e48b9357b34960579ea20e3ce3ef00565e89e1bd1c5cf9d009f91d89989cac3f6db23c6858a4d1ddb8e45af752b87e5d804b3d6ff7f472e322880452d7b44ec3550d399cabe27083446f7219e89cc264b593f82d2ce24e93a61395212b3718b533ab1c2325f5e31f2615de8c7c10eaf7f6a8741e083cd9f843695bef42dca1451e19085a2e5fbc4b9d91257ae32ea60ba055f07fb84423729c9945cad369e06b13fbb27531b00394d9ad1ee2b88216aa5b70f97efc7c1f1589f50cb897b36dd3f7f80f2a792e9eec7ddce36d4928ab1e25a958c3d9d6f611379d1d1b3312e5c179afef73643d8d4f8196bdd7d5c8892210714ef7a381091041fec56da8349ca2c9f95914efaccb62878bc86b96c600f290f1720198a5c567ed9311d24f2af61a39177f6f1b3e41dbe7a1bbd5d35f5bb3885aaf532a5e8c66427abc197dbdd68d48873e23a141a7790b764536381bd2ea4b021956bc90f6a30866124fb98a55e0a92bbddbd6c990d5347306d20fc8231a8e393d90bab9da100b6cb8d4802f6c8efe6c2c14d7b3da1cc316e110688438038de26937518c8d1bf204da14e58e058643b8c9097cb7a551a14c572107aa8f70bf2bcbc4e2378b0268ea3d2c82af2781a775ef8b5eb9b00fe393a0825baee0ba82569530eea05f39ae2d968b6e57f10daa1eedb53939c714c8045c58d19e9ffbf8392581257653bd90fbbeae159fd926de604fef80c787b0e2cad95092c802b759a329db12643400964ec127a0861c92933537736553d1a2d0922f75bfdd98b01a31ea35c772c6dd643848610363a1cf8f844ea062b75f97c6acc3ee2277ca9b49d719cf3074139c6a43427832fa6eb26e6d54fbbe1e3f320b72923cb7d8e0a6b7a7f0e49a6060ba6d763bb02e819997c39b4aa845313bfbe692a336bcefcd4d11052530383aaf685d896693a6193c3f19912517c5d20e58c698f9c923fdbe357321648f7c83b5bf303cb69b6469193f817fa31f046815b6b6b0b083913098a73f9af9270147f35563b6703a1bebd56c4cf721793ed8538f99cfdbf847f6c76b232bcaf8991fd6a5693e340f39594ec8814edb5bf8aff07a33b30c3155a19c507b3fd68c0a51dd946794d717688fea8f6a8f75c95cba063f44b31ac710af13c2cca9f723783c55054dfb0b8926080b821fe57f75f93290751b74343b6e7dce386eb6a0141e13bcbfa711498e34634f155e9bbc946d2208a5fe4c8b8d5c5a702bec2494ccdb24b42156ad94a8212e9eedbfcd0357f7073c5700d88eb62117f2f11ea52bbacb00beacd76034dc1241eed7d60a91db7a6fef30f1c0d3bfc9266f55724ba33e44c3bd048282a06847a038854bb4c7cedbb7248cf947cdebe54d2626fd68cab9e783a1b8175ea834884ae9e0711c903cd656d644c8e39e3b204cdf1be31f59c00ae160081f3d9fd41deba3190afa1227c384fc7ac5cc86bb30bdf9d9c79e98096f25b00ba9d28099f2181c9805e559c38403413c52cfa73838081e011f3f341129fe583fc9f5bc9610487cb3e242d7ab3c00c21fa51a4a4f8455bf2bd5c75abf33f82f72a363112efec20417057ae0a98f11a9d4700f6e36374610f6fd8dd5e96768e52fc3e4b292e84bc9c6e3f141a4c6bddeae8c6137732600c2ff41bd807656d09e3779a9ce2d2339c4757470fb63f10f1ecdb2e72f2cab95c9deda43bc495e0cf26b34cccef4bb219432ee5744c775509548cb5d3b7423e581317a929e7ddf090a58f5fedea8687f455568bda5d70b193ef72f86036474cca9c90e41bfe290ed7df93f8f3cbee3d30dab692527fadb4d6b0811931fd66fb832fc2f020479656582ce6c452799cf3b12a03459a0e1b566c1ad26c90accec25bff9e44d939e5615d934d6cdb423a746fab29b192a3ec6763c47a94016232029a9aa5f1795685d70aea1f507c84e81350c74f499ef2f4fa7fb586476ec790c248fa98e95b0263f02dd3b1e8bf8d8e30924fdefa726d329a889de3896221669534eb13b42d97b130c2c31a97825a89a6a2761f33b85d4e02322e0fa49b334a42245c801276e1c2ff402762af0982d8be0c5a929b1833e1f3233f58829d43378cee637ab130616cdbc6e1924c1e01cef537df993c3635f1b99ebeb1dc381951c79de636dc0bd8f2f8c3f32f7a57c911fbf24968effed80e9236cb9c0853ef46352c5bea4e340935624b8f165e3769d1603f5dee10b5f64cd3da688997e3210e12650f741c483a916a73a615ce45fd16953794291af25db5fa6f58ee82fb031faf73f706c4d88481e760a17f89e78c50073ea89aec3be60d62ad3dd2452e76dafb8746db88888d2a115c414ab09e25f0fdb41ec26748d2b3ea12af1caf1afaf53545bc6b9c81a279ae68526ac90cad5dfaecc588acc7c6b843700edd09d5a2c8046c7ab867be23d27b4fe6b901a02396797233436b1b6e57563c7348d2de9feefc59c0810ebb7fb3e6f8c4121159074a5dcb74a33cbc7fa25245c2ae9f2985a24fcc800336aefbfd2531345311a361954f4670744591dbeafd9be5de1f45d3a7cdb33e6fbb108ed8aebbbfb59f65f0b8f67731f679d1cc9941339d6350626134452887b92fedd2e08a4915fa8012630f90d920548fd51dc19ec74780a221be8b2c5a1739bab9a9640ba8d321976a0a7fa84aa6dec3be09beaee70e189408eea1feb70fa96b12649aef4a6f54cc0aa13fd4b5657ff087e7a99c4e9d5ba536252ba03f2fe9791ae9d819c8e2c1fa242b4462c2e3aa7cd24e7725d2210e1f0b3383b2bc3e5bd7af66c64e16d16cd588fa46bb5135535b495d88b5802a70c1b8c55931a26b51d6ed417b3281de74fee9dc3a3a88c37915cf611d7122859e9679a362921880cb483e485735773ce896159b4c9c05fd92d7b36e742d00ca369a0eed5030c07920f494f3e3799d676c7f2d57f2f9e2ca6238b0b9c470244f57a2dbb33783b773acb4265adfdb5d6c94f0846fb66b6e14a160a9f942aed30126a4842daa2686b2284894debb3486b613da25937c7ec54d5f0f723cdf8ef95b59c631658e19f3ac50d68950e173a8d9e2f1d4ca6c163393a54e1da4e82fed21c28bd60d4dd0afc55a5cb8336e4896238d61072f2178a70ef2f25ffd718204258a1bd5eff0b4627d1197b438913afa579d1f7c163c613b7ad4ba8384ac92f36edd37dacd70f4933e84ba0ddb5b06f720a2444917e57fb570fadb9504e45909d3b93cc267d158a7176a6b7b7f501973f9ed770814288d2b4fbf2d260a373a9fcc5fdc8ec78a1eb052e91aebbff0a725e2a085c031fa9811b13568b8c605d311ca8138ac2238b3b2c28bb02df12ab6502739b8ab9f69db39e8cefc2ebcfe7ec11006e46bca7b51f3d924d294831071383534813dfdc46675a39615d9a5d13a86d55299dc8485ed83a2c791829a97c817fa57004dde43baa4eb951ed5082cc185fc8ecc0c8c4fc5e21fb48f07ed0f38889231fe72ddc1d46316c6137b34791b614bf0f14003c247ef33fa5fcf83142f8c3359446e78d5dd3dc1480ae604d04b6fe3109a846662375964aa49db3b93c22f3a783d78e0f671a5c9c1c9dc152a16d00cad383b3ee69803bfd2b04edea7bd1aea3515537efc8df6c0d17b54802292d73834f3c727ef7848c1d31effc30c3671a49956fd554b06dc0874d70fbef3627dc331a02953d78a1136088c8aa46bb626a0cc762a7f6461002d85083240d3a8629e025a6635ba0b98c2dc5b297be648e062902c668d3139b268f44850ddad3e0994a2f9f512e0a48a5cd686330a0af8add368f618aef01897be790a56481ee9582e7b92c6b456483745d3ef11ae049053356ba32dc1a37d0d2e63682472b9dcc4dbc46fbdac371d6894a4d1a36cd98d573b61ebc13bb2d5ef68463b85f57b59fa09f1523da9ad567b05d209088663bed60767ffcf8173ee26b34e179d1cb848bbe82261ccccd56652fd01eb5a52ad7149e1f5423b47d718094bd30e16b39d436e83756686c45c1edcfa940255696493a63ed82902a0c30944c4e2b42a098280ffd0c930433390b17cfad386a31f89d57195f669fb10dc33280a64efaf213f856a4dc06c889cc59a381afc38c1c677194f13d7ba13a6e4f6d37ffb8b6b3508cfdd303a0f6e7c6c1d48babf8e6255e187dc6277f6b01b982882b9aac0bef729ca68717faefffe606251cec87ea292d7fe510623321ef1814a87ad7d4e0f39862b0f34bcd7445dc68865b1d5679582cb97112b6430b99f2df03cc2fdb4cf94e71d3c0d94d14974fb48cd1c2d52f8e80650f45986001bfe62bc5115d4ecd9024188ce2125e2f56bc8ff90351be0924c4525a93007c08d2245e2b316f602407c4bf461575443f8388d85732168c4c6d48b42ca3c744a3da62c20452cc8b82e9eeb6fa992560281537836c90b7e7ebb105e5050aaa9a583a895e36a010ca05e273c0829fca1a201c007a6c1e75de2bf44b53d5edacd22861e9eafff7221a44e41ee248c4e0920a478d54e83545bedaf44f6eb3cb4b56d7c6313c5cd712a5a4b6d268147bef19eeed710237b3632470303222244f9b05bce30fdf9e7bfbfadbafdd81c0bb627f4928654bbdb6c69b71619456e78a65906d3bf2ad29434af9b486df1bf4877ad2a4fe859e29f55bb8bb0ab7d8e256b3212f342d66d13afc37a51ab304c2760e6a50856eae06109e15f697b5c81499851ac7f864f62f350ec79877660a901f37947875de46e8e0c7d92424dcefde63460cca464f8227e3ff0222fc68a310be268459af46429a4cabc8b80578aed41f0d63a587ce0e819069739759884297f2c8d268a95118890bf2578df8a1de9171497770a7a12a4c897c8f6bdf28444b7e100fe2767d228731ed6300306a75a45f135b9a01448e05391ab80201bcef12d990a4e2caa7de089b4af5bdce778f46a3af9f9c1e24dca110954f746fcfff8f265df89002cf421b8216951225d1f490239f812022816768fb32c3ff24120fe076573883aa94510e62ce3d968da182550e92b5284a6484b036d9293473c41db11788199371d3142be2ebbe0606b7d0600a49dc65e083829410420f335e5fb9ade506259a33bd247e4cbb1efde783dc6a594d4bf684c4edadacaa9761ff56a948fdb422eb9481ef53f6bfc891ae8516498f56d1646c46cd01c044e879286eabf7d0be38ace26bdae39f3ac1644673ab2b4e62ea238ec8c65feca7db74f99829564a5e7e326f41fed2df8b982729e6b1d9b7ea6f4d77e680b509e36d59ad835514d545f9c1a0b2aa9fc5fcfed91bda08c39bc5a4c3f0dfaec8f05d7b46d31a0698377a1b7d3044f2f69418c71bc87e207a7668130c164f58005adf4ff9c33649cfb0253995b6e2f581ffc6b21db7475acbfe4ef19fa8b227aeee0bc9bb8f3a38181f2773b5c171f4d213ea422a591c9311f4a2521bad44ece9127613b531354f11897537e838e06bc3bd7dd004ff0bdb46f814ababdced97a10002274d36a7b5a2e49a7783fe182fea452ec55760dcc2e60f2804315abca0d38764621d84d8539a3291abbdcfe522b41d0e0bb17b5ca7955b47eea90a852555c54132d8c5576618acf7374d5f5d68197e6512654b65b7d59eeb96f30c718bf4d9c0ec0faee8b80a70526dd85d8e2f3a79ba60b480bbf78085b1482567db26589e3c62eb9ed26ca4a3a4b6c658f954dc65556cb8e22046bc8fd3fc275ef0bb1c81c3650e3c70adfd4e6d67fad227bb023d5592154a8ebe83df046abd9617d304a0b4b0630827709bf001f04f8dc8566b744e6f2cc9306f6d3ea23dd02f27eecb421b03b8bd9d214c5d91660a70840b6b9f8c74aab78b0dbe1fb0c08979cc76e6224bfbc8c2958ae68788e9d2c379efba18836f85d5a6f05b68834c7e2e16d8985576a1e08deb708c226b551ad498bff2c1eb038ea88ec3c777a8b4cb00261e4c4a5c541d88a0522e6c201b23ecfccf63751711f24c61fbec3194625e905025ec3cdcda97327d9eae72a0214b6c1d5a98eac2f1877d46ab81d9a2c1af1b6d01bcf4124d3b15df4713aca6884582023f79730cdc1ad5e700bf1a8ae19a547c0f2181c85f3c3b40119fa7f12755ae32b434ff52d681a8506a8cec756ecab6a89d675f6332512b548b158e615025dd9a70e650fcfef0422d918811460fac338bf1812dd70fb6f902858850ccc2a87b629a072a24da7e7fb3093fd552a3fcfe66df309f00e80da6f99b7cd0e7c1ce3ad4297d8fc4f08461b394556c1d3f7f28eda5f82f577e29c2875c30ed40786a10f50c97d01e0bd66a2a809d049ee898ba63cdb06e481a54e73d796e2786e8c715b7f85680d72bbab74fa3e1f103a7da3810ac66efa338a0c3a4dd86878d322536f0f9135820b8db11a581726d04688a5b5c0faa74ee8369ce0bc2bbebcb79298339314b57b7241628c405a6dddc07c4b0b760c5d52e7cdcfd4dc8f90a0da2af1951f5eaaa7934b195f1c32573aa4cb327cf9f054e857259b435c8037b4540f910604fda7be3a87341aab4180ad561d59c519ebd10ecce1b4497fccfed404223dadccdb22a964d8792362a2fd66413594465dfa63104940b153c62340507748b74bea366b07ac8a69b70fd2d0afd3afe16ca6dd6c370d7cbd15ad2c2b684cd109be2360115201e048be7fc233c555173464b7f6f1d402003d67fdbcacec9b21467822b61cf15f07d47af543cc0155377501ddb919c4abd988b160a447e5536a6b5dd6a9d574fce11af092ff8efa5e25bf1f7a297276251b7c76fdbb241f5fe4389b0437e4b096a622c5b9a5c68c273d56ff74b36213346c213dc32a09c6c7c9cbbe8d3cb489698b9e68964d5d6691fc5e44a9e87683faef95bda96e378d4d46d6eb4eff285a2dab34f8434fd2f7dd2750aa0ed7d0e4a34fa68c065656490398abdfe28556a984573412cab6f0a83ed0f8f8b7987d013c596163e8f574b274944e9baec8cb394642eab0b6604b8866a97f852262a8d0a4a8bc41b59c8948a51142ca6691f6ed51feb08ed59a13b1e68f2b9fa2d6d5c69cb8075fa371aa47f295cfb051b6b830dda50d1f33798b01f342034973fcc3a494dcd9f25338e2f6c5d9e058fd4e0248bdb3f5d4ff98a0951b6e05019aa1db435728f1eaa88549496887f583e080dfc713ebbfe4b831d4a672a1bdf194cc72a67ba3178b7466d1b22309120e4196587a44b4e96e195d9e1a9bf71a3a2b5463db9633050e0098a763e785fadf4fe4c5d1c76266c37b02a025f45682c8f6fe524d6a466400d69d4554b2e1b907410f52bb2d1836ac0acc549f69883b9e264d7d64c2c1040faa52588898888313fb2c7b92c1b22977155d0cd1448db2dd61a8d4b56b0d53bd13a30774a9ee539c53c23fa8a33c091a7c0a36fe98733270e2c3873a4f4689a5e9b98fa5eb88d4a500094b6c57780c4911e7447243974379ad6ef70282dfc5f2876fbf7c9902a81e7d46fd4a81f399907587e937766bf188081350ec809b6b45f8989fc505f88fc7c2a388e1019f53eebf55e1ee946bdd489624efc01db2a8cf6640f0bc953615cc5cf514618db10aa31e13ad9d29398bd72a375291d6b404d8ea630a163104949fd8a40105223c2193f3f5eff0d2e765f93c1962f020f777a210c6ca8a3f5e66d48299da210fd197d317fa09edc5bcc9c45fae914be43a5225456722ae37fbae92a1377856542e58d5bf38aa9c54ad2eb846718587047c8602be5dace20b076d6ebd8fe15f3ef3919ac2f9cce5dbea1348345d754cd9f077bd28bf7500170bd3a49a6fcb675b57ae0cbcbe060a7d904bfe116cabd66e8442d7d68638138f605dfc7510cb6de7433111c6cb23c0a616690f2df1e6819d3b947ed8fcb05d490212d7f1a15fc952278287e994fe28f3b077c2398d907685cd0ab3435c58dad10a25b29e60210d987c038fc2edc38d0c8a90f75e0e0543c9975a833f50f0dd4314274a57589d003167537813484ffc78d93997301d9ad657614d1f8e61f8362ac4c6857ed725f5d6609ed39bfb52fa08a3b50ca15527a78b39bbbaf0bab738bd3225435323777031b4ed791de1795c7fc19316878b92e92d0323e46cb5bce2b152a901523cd8c450563a905d17e2316d34b640ff189d79a8161866a4705ad48205eb44e568b3c7b1a85b850ce66e4aba901035c1760ea3f2ef29f92b7a83e15a07700de27967464ed1b864a99f07f575c3112441eae3deaeac091182a6bd013f30f65e983399a9407878a9b23d2094ab4d6701066e53ea9cf8ad23d5f68a5b48be828c5532603ca27767002873131f8fab62ac8458ac491b1ce47aca3829c39d7a4f29bcf5bbfe10a307984366cce00fdfcd70aa9b0a2bae825991613ba3be3fefd1d90ee459d6a72b96490e8a07bf8b90d85f356b6741e47a848e990ef6d11c4997aa4ed00c513b6fc223c686e83c8137e5799effd4fa20b782f747a862055001c59eb2c54b3b89eaec8d95ef48db3cbf51983657e4b967f4a5fd6a75ca537904cfe84f6be75a893300c4664d98c723d22288bd56f9e8388ef6de50636a5b91db0ad6612888226adacbc7bf5aebb95e10e3b17310fcca8856efc944b4acf4cded7c127a7b8604ba9f1f70dcb3c701e7c5075f0186f264037ccd4a8ab286b9f733086507af52d7bc72b9ce7ccf2469335dfac6ca4d999957033ff650efdb318eb9650be511685353f2cdb1d6364d5131f7f98b2d54a54f61d6583e78d91d89f0994d7dff296936960c86afcf69442cf0117c46ab53176468beb59a396775376dd2f7431724ba0690857663dc430885287740ae1584897a963cb2b2032573a6ef93be19806e8f423b0860f509f8b9a63cdf2d9dac6276d6a0a800ea4e90045b0a1a2c34c67672f12ee8063bf4f9d5d7143476ce3ebacf9d57b00257ad006cfb91f6435c8ee6b7d042072c41c2840db202924da6a23100874aeccc21cf1b34d8e3ed4db3d8ba83289e651f703a2b5c1667a37b9c8220bd4beda5a09d86bfe356f792047dc5ec52442fc33daf0bba0eff7015aab3ac88609e43e54753f301c2ea8b0bc5da1d8f24475e33fbfbfad13533a9dd79b8ff485b0ed10128d5ae2dcb4fd5c06f62142a80cf5c31a710a67d250b440ffe5235b709deb0abf5856b849d9165a3b99f25352b4dc84b900fb9cccd3dd948a175557bb80d8fb6cc863e063ac2d4f977d6f8d45a13b937bca5de2881444c46977251e97fcd46be2fd5924d7ea1f3737de0df7c548eb66329482538dbb6f240b4b59fbb3ebc2955690e99633ccfea9c70658d76233f37ec490d2d23c1b9168c9f711c682393c98df63bbef0a4302961a7fc7355be7dbe0b499e99996a4684bb4cf601728e8a0fedc34cc1d72f9f4fa331dc05a1e56e42d4b5c998c180652af31d54249deb4ce8e0100d8bd7e6e5ce5b02fa26ad38d9818f07e0b8417a4906c875c828897767110cc3b511ae2fa11fcd7069c15762a5450b3fa748ea2b9569a08715fc8bddf10f850a12a9400447b643744cd6062b9bca363972f29a7034f2fa18514ea9f73e899c31273a6b0f3d1d1d74b7372aa1d62bdb78a6472e48fbcc6ae43f4db519c5b1e88f9c3dc8e307c6515cdb888a4277a821a1e2cded8b7392c7d96265c16df10a8a12d54d3cbba77c3a5fcc0b47ec1edbc054f58bd89b9c4bf439cc456892ea0396bba0d8f2d14a9fede21f214017df9ef6403255d47c59dee69ee7b2cdefd2e9e1c06f402242fca12b2e8d29a32cc50b84892f06ec7aaf6684e3b50b979bf3e30040db277537e27b47b4d7eaa023a9b482fe176b9a9cc9986ee5d47c987c7a3b54010478de0710c86649b748b0da4c6aa8f1cbb2fb70ce2aae6b766bef8c447d78ccbd1ae43de94ade4c2164b1b9d7a9b27b9db8b2673eebaf473e5ba074557755e1a35462f771015f959f51b701a12dd906a7d660f0db9fa67b5bed43e38629890669ba04873433d9cfce92c902955c9ed6e1c6ac0912421e4c9d3ee9e6c3da8ed643b58e52c23b665a1ee2bfb68cb000d33c4535bca04b19eeea9826c23821b99455cd041599f51642ee37c91028eb29af9a6a6921ec6056e50aecd6e0c7a1c2b85b7f3dde94e0b2d3a41768a350488485cd033c26980add910a69c8f5f4e5996145ad047c67bc29fa6040fd4a5c46bb150d5f37a05c24e3517b5f8978378d1f68d5ed6f1089cc9e15db0f13b8aba78b2c8779d85a2c619259c90d20db89f749f236fdf686d5bd926eb94da92f8dbd5ad1952c4e93884cab41f99934c936b43703ed95babb8bf60fe2e32e205b499f1a6cab831dde65e97d6535671e54a7ae05b91c7eb41919eb987a9827eb20a71d082feb1b242c3d8df0e917da49c3a0853019abe92ccbfbe950f86c4abe238013596850537879a4fa73c258b0693aa7686dcf537e42d6d8eb29b5a45f6d4a98acfbb6fd8f04cc5daba7a663144aa9705311444cfb746e45065749cb2c8edf7886c80ba82bc97e4c9c9767bbec060a48621bf0bd94ebb92fd9c868d34813df1a94cc4172a46660635602e1fd84e8d377fb89b371ed35a6202256e5bbd9cc85440e9d93773b00fae2f6a73060196145a297072264d2149f7a851d6605003350df7764ea9dc495d73e6fcdbf54bbe16c01370527bfdc05ecc5b2b132f2bbd2bc04d82454bb989030aec40e6ce61323fb22443ff6fc22f03990b0ca0703c79b935038d6fa9b9155077bf7d45066cbd6c133d19710f75ce98ef7dc0bbbf0727d1b947af3723cdbd869858362e04f030462b3eeb895c537ecf754b9e3af7c32a84f2cc13967bab187f68bccb2990fcdb3954088628f1ff8b53ac2c8c1952d0870dfd891627a123a99f6bff340f10490b3290a739a0e6d08d8f49a68fd52270aab04ecc73b0ed8669fed63f027a2281e4bd34960e343cbfabb2d10d6577869972da6a2e60db8df013f877b998a6b9f4902c1bb7d83e03c4a7da1c7dcf317d670a6a55fee3c045ba64942d590adf4a4959e593351fa0119a5800a142cc0a4d9058c4bacadeb8af70c11b8dbd041a089a4f448039c908258c51a45b86da14ac2501d36402070247da0fdca5a76018fdc7a6a9da971d1bdba2985bd766e23ffdd3165c7c0dd052169270d7411c3145b000d6bbcc7718bec01050664dc6d9abf932f556dbaeeec4de4fdc7f0e085cb7a17b270706d333bbfd608073967db87c13bb8ac2e341224d53f34b0dbe8946cb8f8ca880cafc5dd324b77d42dfb327442f2df1c8287ec42831fa981c46602e4a60a39c1800f220ea51b5d0e94e664fd48ece1294700a58fbcbe5309ece95b031287883ba123e76797278bf26219148885270eab4551f2f6b42ca25844d9e3d8b79acea96eade869bc0b0e326b06c69e403ebee4e7fbc5d8b7ba5bde72a3626db2bfbca8ed5520fb96dfc30a370f49aa5757cc76cc58da0021288447880a91602cfe7ea7e1b2d24b2ae9441c0d69224d577d5003c4f2dde2f365cb83f954f399c535e291ac2f7d76cfa6a2f1575be0937db4c4ba1ebcdb4f778f19eac88c8c4e3e0a1e91f2098ae6c18d00c1cfc4b4b2fd84406737ddeb24e2c21b20e7db83d194042f3314503429f37eb73c614f0d588f4c9587888fb6a905e1a8c5fa8f466520e4b01e853a79d2821804417556c0c1729dba1c589d386f2a25d7418e17d9b70adbaafb99e021d1a1e0fd55abbae1fe29cd8d38542a40f396175d9db586f12bb81a0c85f01353f54c0c4be532f42f43a6173bf16f3b5bf24d86e3d704c6e83682683e72a108761f08627f0751aae6462beafad20615d99da5ecfce37e90a63dfb3c2fced1ea979192b321a1f5cee41c3c4cc5e4aa4ac0355b930ac13f59934961647e16dbd2b58bdb6ff545c66748e5967cc3c42ee28b380d5dfa3f4ccbcba20bee3393308f49642ca45510411f51caec5d29de266269898eaae97720e1218e8fd5523a3f4502d60812d1056db1511022bff60d74a75ebbcc427f120126bd8d9a3b2e57350867d9ae3e13118781c8f4787740e027556ef1b38b8e2de2ab79b234be0101790b49afe4f8dd4a1f91967eb9cbbface9afa74546f60a4151337daf50798b317c5e1fb93372269690671084914ef817d89a9a280b3f892305430e83f5265a89cd11cc24dc2e60a318fa9595f7e987e93d3b5ec13d1fea9996e2e6a56618c95b81ed9afee19198f1bb0325c0a6d1a8e753ae7c6a9d8ed84eb29a7adafb66dff122baae80c2aea4eab8554939521f13f0fe1641044dcf56274326536470ead4e1048f94c7080952637dc8bbd6b203e2154f4c36565151c8c7b9e72af09bad1255415dbbe13c80c4a221705b997c06257fa342484a17d19c6a2ca64ef7891cda285fd103588c89a0cde77c738e8ef7bd62f47a557251de4cf7e89a4975f11d28bcc5c355221d4432e151cd7f4c9b88e13069522ff857251eb46e0072677fa07eb88bc7f5b0689ec9c15fa7f05e065644a163c1d7bd4f29723fba1a53be9bcc632015e10427f33f0e47b26a7324f85769e297d3be06bc30802f7848e0c9d6568ddb484ea6f932e510a5e035b16e1d3ff2ab784c5c130db1c56c6e18650fa1c46359d593f3e6c457e9f6d25977b27493edeeaf383c15af283b8eab61d99e9563f55df1a6d3be8dab645ce7446f2a3f78b2060c050c851f25e4256c4a9614f7d40831ecc822ef2178ba43ea5e699a171f6ec23b894f6c433980518a50844f0bf617112a37d33a22007d595284c00b4016cff6a561def214cd21a82b54f6f7ed27fb13a6ff1836b1be1e069160f79a0297955d7ae944706796109f307129c89efd50086921235bf53306e8a45699dde106ddc4e76f4c8a72ecadacf4cfd84f060626c681ddee8642ce3aa1d944b9bf71610c9614dd733443847a0cca752e15e61d953b2992391e016b65f1c1c892f879506c6c76b631522403f654fd7f4f64cd0612ebff49865e78ced785a89fa15180adb47e3e790a0ee8361fdf402ba365a7fcda83653951b2b834d0abe50d0628a280d8e9dcf754edef383b2539a5287ab9545507107a7f500fe87c7969723d303396afd429471075419b881c2cd43b38637048efab85d9a004a2006c0240780f84aa72a9ce080ce723c7d32c89ae6c3876697961e87762b51c533e4d61c3a2a5f71000daf0f70ed4ae2fd7e5c04bc455778df0a7ae95b7f6b57297853f28362d2edf758c44f7da181ca2ef9180fe9b21ee4e696b7f4ef64c0f659f8c785bf9d27242ce6e4364d3b97b2111fbd48147b26e8fd398a4bba0067f8ca48a8ded64c90bb0bca2df008027b1d9566317bfaf6b279371286a3ac873e275ee006f10030909eb0fa68c15caea380f66f8c32b72e92cfcf361783741c0acdaa82320227a6e37a6df2bf20e26427a763651ee8ea3d12b1395427e756302926f7b017200e151028c8f4adf5f516979f482261269e8cf6af0615a8cfb6da50df759eb3e074da602d2bb6ab4747ffe016837bb4f0d07f866a084ad48b2ffa63b7be2c9b5bef1d4459246b6aafccfcd3976129f8f76502c28bf0234e9234a40faaa45a53addb1d6664ceed7b3ce7e9fac2dbc3228b49bb9c92b988fb667bb96e2f184c7fb7e1becb12b11b451fe031ff82b8490bef54bff82739c822931a93ff4f501dca2657dd59daf64f1ef918c2a902ea55e20cd50ae041e6f70807867be06293621624351787e41f49ffb06e6e2c212f5f16897f4c95e1e8aab01a04a1237c9ee29526515e3a39176ba4222cc42940fca45344879163198576f99105d52fd4413e1fc72e413eb846d6cf21542cd75a184b2f2e5404a314b1a08fcd236696914dae07d24f7bf2b5c2a0a97e327f8b8b5d7fa66c223f165e3d22bd2671cea83562274a4129772ffc4314c2274872f7d1e89a4b84e9999429e87fb88d31ecd6a2e50a2022b44c9503397bfd89e541b6649fdbed43060ea3efa19f88a453d52485890a7584428580dcca6cd2ea26b053fd64e14ef5ef6d84362c7d3f330b657c85c38b6c1c410c9465ede49e6dbbd781984900fa3a86b7bc6041ae70880a568cd3349f4f8b012e0da31c2f012489584daf254b627085fd5a6a6471b0d969e153662c9076ececb82d48289227594b1e34c615bd0b6e65b8881c1b6b7e1b2ae51877c3fb8113bbba8bc38ef0ebb484c3c06c1dbc0e19e1c515a4960ad50e86d25e6d82e856eb5d443a0c6bd5052d8a9abfa6b0df3278e6b2d00154f07701ffae6cf55ce32cb80c6ed14e41ac430663172eb511846bd4b1eed2542e670b3b1eb67107f4273394f2e5b712a40c1e3cdf8e490987ef1701774e6b3a8fde9d0040892f15ee4b0c2d1b57ebae51d9ba11f512a5285c5c0330e1235adfa2a85b46b41ffaf302427bee6c18bbc65ca520b52f5f8e98b1f92c931b1402e6d05442977ad51efc995be0325e32ac97e49179879a4f81f97be0a6a44f830d36d2ae6f0a6712764d7f845116390527b613342e6895526198dd5ad535bbfee49a5170354e3d7e22b0ad470b3cfc293a6db511893099c8da84f333815b19021ebaa0826dfb69730ad4c81410aaa921d62aa3ebe65b8f1b54c1dc3ef8df5da5ce48ee1c23a3772a7a1051cecef9a6beaafc898d5e89632f9bc64daa30381722103f149e5446ce2d9f460e0107e6724d496d11857f273a982c5df1d74524843dee2443d0e131021a8c8e7276569b7c616f4a1262a60e4b0447604d9c732e00314edd2d2b6550d9aefe19570467a4139af217d8f77b80e6a5236687922fa032418e6125bb04fd378fdecc8f1854b4e0f58d6e8336cde8729b310ffc77c392986ecc452e81b71634038c7e80bf24d5eb88b161c22ba032abba02325a828980229ed586afb9c0fec868ed4dc03d350f8b9f5b5e75488740f3cd6f75b4c68a9752a8df59521cb9a6f7fae264519cef21d3980b8536cfb4fe481d0d54c2b325960840c68a5b4ee4d71c3b6b8ead00d7c5e9f721b76fbae5d3b4f90c83a444cf46eccfb21ceb112148028d6343f8cf497a2530178abba0f84b0920526aa034fd3bf081bae91ba4b559c301a3e392f6797e679cb614fb4be4699c25e91316b4b09e093ff9c6f2556d025e93939474d6880a614506cfd914ffd9674f5bc0c0f281237b8c6c157d86811c095ef810b5a3cfad4ea520ac592b91c51aca8e0186b31ee0d31613f17dc3e8289f819de961f457332e5f47e0abfe236e8163ecabb60c6f2c7604becc600f9fc26023f7cf2747b212c2a5da8c08d694823d17daab10fcb1fc7c500859cae4decdd739c56f6cb7fe5e6e00613b9ca42e48c3943186ca19af64cfe964d6b580efdc050f3f35a7a238e66eb435c4d3f6e3d2070950d757b15598ef1a9b0e6204c3c123b7eeb92d77c166724549a5503f21a4e03438abcd6b5d8ec87d2a68c7f88483f2e5f972b9886566156333f621e2d8fbcbd85b65ba92aa1fe75ebaee998648d1eb6c9b987bf3271384fa92d38af65b28038da3e44c1c409acf609476b63ac415fb0687e21b9fbc12b05d1a6c1ae391b88ce0bdb0014dcbab5c8a265688df0afa3e53df75a94a2bce1e09f78628c6dd333742fee1d9c46efe710859e89246133f3b9b01296a9ddaa51f0668fc2ad1bf4c8caa808eae18b6cbd77eacc64e792c8113597aa718bfaa0f8b13817a07b8412dab97f60c649f1efb66ed7b41a1cd0542257fdd0562d768f20612330da28ff1c5dbba1ab777d3de521b958d08f777fef70357aa18d9b3484c14f3fd7eb7e99d850cc48cd0ceea5b1d4a6111f8fdbc3acf01056867d4e4612e2ba2de1cc3ca56ac7aaf3a30892dae680e47388419d94941800f952d33b6204cec5a8a9c516dce031ef5ba1b62a04ed1767244372e9705862013"),
		"QUNEE"
	);
	var p = (i = JSON.parse(String.fromCharCode(91) + t + String.fromCharCode(93)))[0] + i[1] + i[2],
		F = i[3],
		m = i[4],
		y = i[5],
		w = i[6],
		B = i[7],
		T = i[8],
		S = i[9],
		e = i[10],
		L = i[11],
		v = i[12] + i[13] + i[14],
		r = i[15],
		b = i[16],
		N = i[17],
		a = i[18],
		o = i[19],
		f = i[20] + i[21],
		c = i[20],
		_ = i[22],
		l = i[23],
		d = i[24] + i[25] + i[26],
		g = i[27] + i[25] + i[26],
		E = i[28] + i[29] + i[30],
		h = i[27] + i[31] + i[32],
		n = i[33] + i[34] + i[35],
		A = i[36],
		O = i[37],
		I = i[19] + i[38] + i[39],
		D = i[19] + i[40] + i[41],
		P = i[42] + i[34] + i[43],
		C = i[44],
		R = i[45],
		k = i[46],
		G = i[47],
		s = i[48],
		W = i[49] + i[34] + i[50],
		$ = i[51] + i[52] + i[53],
		X = i[54],
		H = i[55] + i[29] + i[56],
		Y = i[57] + i[58] + i[59],
		J = i[60],
		Z = i[61],
		U = i[62],
		j = i[63],
		z = i[64] + i[65],
		V = i[66],
		K = i[67] + i[68] + i[69],
		Q = i[70],
		q = i[71],
		tt = i[21],
		it = i[72],
		nt = i[73],
		et = i[74],
		st = i[75] + i[34] + i[76] + i[68] + i[77],
		ht = i[57] + i[34] + i[76] + i[68] + i[77],
		rt = i[78] + i[1] + i[79] + i[34] + i[76] + i[68] + i[77],
		at = i[80] + i[1] + i[79] + i[34] + i[76] + i[68] + i[77],
		ot = i[81] + i[1] + i[79] + i[34] + i[76] + i[68] + i[77],
		ft = i[82] + i[83] + i[84],
		ct = i[62] + i[85],
		ut = i[21] + i[86] + i[31] + i[87],
		_t = i[88],
		lt = i[21] + i[86] + i[31] + i[89],
		dt = i[21] + i[86] + i[1] + i[90],
		bt = i[21] + i[86] + i[68] + i[91],
		vt = i[21] + i[86],
		yt = i[92] + i[21] + i[93],
		gt = i[92] + i[21] + i[94],
		Et = i[95] + i[45],
		xt = i[92] + i[21] + i[96],
		mt = i[42] + i[58] + i[97] + i[98] + i[99],
		pt = i[100],
		wt = i[101] + i[102] + i[45] + i[103],
		Tt = i[42] + i[58] + i[97] + i[98] + i[104],
		Nt = i[105] + i[58] + i[97] + i[98] + i[104],
		At = i[46] + i[58] + i[97] + i[98] + i[104],
		Ot = i[82],
		It = i[106] + i[25] + i[107],
		Lt = i[67] + i[52] + i[108],
		Mt = i[109],
		St = i[110],
		Dt = i[29] + i[111] + i[65],
		Pt = i[112],
		Ct = i[113],
		Rt = i[114] + i[115],
		Ft = i[21] + i[116],
		Bt = i[117],
		kt = i[118],
		Gt = i[21] + i[81] + i[119] + i[120],
		Wt = i[21] + i[121],
		$t = i[122],
		Xt = i[123],
		Ht = i[31] + i[89] + i[65],
		Yt = i[124],
		Jt = i[97],
		Zt = i[105],
		Ut = i[125] + i[45] + i[74],
		jt = i[126] + i[127] + i[128],
		zt = i[126] + i[29] + i[111],
		Vt = i[129] + i[21] + i[130],
		Kt = i[131],
		Qt = i[132],
		qt = i[126],
		ti = i[133] + i[29] + i[134],
		ii = i[135] + i[29] + i[134],
		ni = i[136] + i[38] + i[39],
		ei = i[137],
		si = i[138],
		hi = i[139],
		ri = i[140],
		ai = i[141] + i[21] + i[142],
		oi = i[141] + i[21] + i[143],
		fi = i[144],
		ci = i[141] + i[21] + i[145],
		ui = i[146] + i[21] + i[142],
		_i = i[147],
		li = i[146] + i[21] + i[143],
		di = i[146] + i[21] + i[145],
		bi = i[148] + i[21] + i[142],
		vi = i[148] + i[21] + i[143],
		yi = i[148] + i[21] + i[145],
		gi = i[149] + i[31] + i[150],
		Ei = i[151] + i[29] + i[152],
		xi = i[153],
		mi = i[154],
		pi = i[155],
		wi = i[156],
		Ti = i[157],
		Ni = i[158],
		Ai = i[155] + i[159],
		Oi = i[112] + i[156] + i[159],
		Ii = i[112] + i[157] + i[159],
		Li = i[160] + i[83] + i[161],
		Mi = i[160] + i[72] + i[162],
		Si = i[112] + i[160] + i[38] + i[39] + i[159],
		Di = i[112] + i[163] + i[164] + i[165] + i[159],
		Pi = i[163] + i[164] + i[165],
		Ci = i[112] + i[158] + i[159],
		Ri = i[160] + i[38] + i[39],
		Fi = i[166],
		Bi = i[167] + i[98] + i[99],
		ki = i[163] + i[98] + i[99],
		Gi = i[42] + i[1] + i[168] + i[98] + i[99],
		Wi = i[169] + i[72] + i[170],
		$i = i[169] + i[72] + i[46],
		Xi = i[169],
		Hi = i[169] + i[72] + i[12],
		Yi = i[171],
		Ji = i[172],
		Zi = i[173],
		Ui = i[174],
		ji = i[175],
		zi = i[21] + i[81] + i[176],
		Vi = i[170] + i[40] + i[177],
		Ki = i[178],
		Qi = i[179],
		qi = i[12],
		tn = i[112] + i[179] + i[159],
		nn = i[112] + i[12] + i[159],
		en = i[112] + i[163] + i[98] + i[99] + i[159],
		sn = i[180] + i[21] + i[181],
		hn = i[170],
		rn = i[180] + i[21] + i[182],
		an = i[180] + i[21] + i[183],
		on = i[180] + i[21] + i[184] + i[21] + i[185],
		fn = i[12] + i[72] + i[162],
		cn = i[186] + i[21] + i[187] + i[21] + i[188],
		un = i[21] + i[81] + i[189],
		_n = i[27] + i[1] + i[168] + i[34] + i[190],
		ln = i[27] + i[29] + i[191] + i[1] + i[90],
		dn = i[27] + i[1] + i[168] + i[127] + i[192],
		bn = i[67] + i[1] + i[2],
		vn = i[27] + i[1] + i[2] + i[1] + i[193],
		yn = i[42] + i[98] + i[104],
		gn = i[194],
		En = i[21] + i[144] + i[52],
		xn = i[21] + i[195] + i[25],
		mn = i[49] + i[25] + i[196],
		pn = i[197],
		wn = i[178] + i[1] + i[198] + i[52] + i[199],
		Tn = i[200] + i[1] + i[198] + i[52] + i[199],
		Nn = i[21] + i[200] + i[201] + i[202],
		An = i[179] + i[1] + i[198] + i[52] + i[199],
		On = i[24] + i[52] + i[203] + i[29] + i[30] + i[1] + i[198],
		In = i[27] + i[52] + i[203] + i[29] + i[30] + i[1] + i[90],
		Ln = i[166] + i[1] + i[198] + i[52] + i[199],
		Mn = i[23] + i[204],
		Sn = i[205] + i[98] + i[99],
		Dn = i[21] + i[104] + i[206] + i[99] + i[68] + i[207],
		Pn = i[42] + i[25] + i[208],
		Cn = i[46] + i[1] + i[168],
		Rn = i[209] + i[210] + i[211],
		Fn = i[179] + i[212],
		Bn = i[200] + i[201] + i[202],
		kn = i[213],
		Gn = i[21] + i[81] + i[214] + i[215] + i[1] + i[198] + i[40] + i[177],
		Wn = i[216],
		$n = i[217] + i[218],
		Xn = i[67] + i[219] + i[220] + i[1] + i[221],
		Hn = i[22] + i[25] + i[222],
		Yn = i[223],
		Jn = i[224],
		Zn = i[218],
		Un = i[67] + i[40] + i[225] + i[1] + i[221],
		jn = i[218] + i[217] + i[218],
		zn = i[226],
		Vn = i[227],
		Kn = i[228],
		Qn = i[229] + i[127] + i[230],
		qn = i[231],
		te = i[232],
		ie = i[170] + i[127] + i[230],
		ne = i[233] + i[211] + i[234],
		ee = i[42] + i[58] + i[235] + i[1] + i[236] + i[127] + i[128],
		se = i[237],
		he = i[83] + i[238],
		re = i[22] + i[29] + i[239],
		ae = i[22] + i[83] + i[240] + i[38] + i[241],
		oe = i[242] + i[243] + i[244],
		fe = i[245] + i[218] + i[246],
		ce = i[247] + i[1] + i[168],
		ue = i[248],
		_e = i[170] + i[25] + i[26] + i[40] + i[177],
		le = i[249] + i[21] + i[250] + i[21] + i[251],
		de = i[252] + i[21] + i[253],
		be = i[254] + i[66] + i[255] + i[66] + i[256] + i[66] + i[257],
		ve = i[258],
		ye = i[259] + i[260] + i[31] + i[261],
		ge =
			i[262] +
			i[66] +
			i[263] +
			i[66] +
			i[264] +
			i[66] +
			i[265] +
			i[66] +
			i[266] +
			i[66] +
			i[267] +
			i[66] +
			i[268] +
			i[66] +
			i[269] +
			i[66],
		Ee = i[66] + i[254] + i[66] + i[255] + i[66] + i[256] + i[66] + i[257],
		xe = i[83] + i[270] + i[25] + i[26],
		me = i[271] + i[21] + i[253] + i[21] + i[251] + i[21] + i[272],
		pe = i[21] + i[81] + i[119] + i[273] + i[98] + i[274],
		we = i[275] + i[164] + i[165],
		Te = i[233] + i[214],
		Ne = i[276] + i[31] + i[277],
		Ae = i[21] + i[172],
		Oe = i[209] + i[278] + i[83],
		Ie = i[279],
		Le = i[21] + i[81] + i[280],
		Me = i[267],
		Se = i[264],
		De = i[46] + i[25] + i[26] + i[40] + i[177],
		Pe = i[21] + i[81] + i[281],
		Ce = i[27],
		Re = i[209] + i[27] + i[40] + i[282] + i[29] + i[283] + i[68] + i[284],
		Fe = i[21] + i[144] + i[285] + i[26],
		Be = i[286] + i[115],
		ke = i[286],
		Ge = i[287],
		We = i[233] + i[288],
		$e = i[289],
		Xe = i[21] + i[290] + i[29] + i[291],
		He = i[21] + i[81] + i[292],
		Ye = i[209] + i[81] + i[119] + i[79] + i[1] + i[293],
		Je = i[209] + i[144] + i[294] + i[295] + i[83] + i[270] + i[25] + i[26],
		Ze = i[21] + i[296],
		Ue = i[104] + i[31] + i[297],
		je = i[298] + i[31] + i[297],
		ze = i[209] + i[299],
		Ve = i[300],
		Ke = i[209] + i[301],
		Qe = i[302],
		qe = i[303],
		ts = i[263],
		is = i[265],
		ns = i[266],
		es = i[262],
		ss = i[304],
		hs = i[305],
		rs = i[306],
		as = i[21] + i[307],
		os = i[308],
		fs = i[309],
		cs = i[310] + i[214],
		us = i[209] + i[311],
		_s = i[209] + i[81] + i[119] + i[293] + i[83] + i[312],
		ls = i[313],
		ds = i[314],
		bs = i[315],
		vs = i[316] + i[115],
		ys = i[316],
		gs = i[317] + i[115],
		Es = i[317],
		xs = i[318] + i[115],
		ms = i[318],
		ps = i[319] + i[115],
		ws = i[319],
		Ts = i[320] + i[115],
		Ns = i[320],
		As = i[21] + i[81] + i[321],
		Os = i[42] + i[52] + i[203],
		Is = i[42] + i[322],
		Ls = i[323] + i[29] + i[324],
		Ms = i[42] + i[25] + i[222] + i[58] + i[97] + i[201] + i[260] + i[25] + i[26],
		Ss = i[27] + i[25] + i[222] + i[127] + i[325],
		Ds = i[21] + i[81] + i[326],
		Ps = i[327],
		Cs = i[328] + i[329] + i[330],
		Rs = i[331] + i[329] + i[330],
		Fs = i[332],
		Bs = i[333],
		ks = i[334] + i[214],
		Gs = i[21] + i[144] + i[335],
		Ws = i[336] + i[52] + i[337] + i[214],
		$s = i[21] + i[144] + i[338],
		Xs = i[218] + i[78] + i[218] + i[339] + i[218] + i[340],
		Hs = i[218] + i[78] + i[218] + i[339] + i[218] + i[341],
		Ys = i[218] + i[78] + i[218] + i[342],
		Js = i[218] + i[80] + i[218] + i[339] + i[218] + i[340],
		Zs = i[218] + i[80] + i[218] + i[339] + i[218] + i[341],
		Us = i[218] + i[80] + i[218] + i[342],
		js = i[343],
		zs = i[344],
		Vs = i[345] + i[13] + i[346],
		Ks = i[345] + i[98] + i[347],
		Qs = i[21] + i[81] + i[119] + i[348],
		qs = i[21] + i[75] + i[349],
		th = i[21] + i[27] + i[31] + i[350],
		ih = i[21] + i[347] + i[38],
		nh = i[351],
		eh = i[209] + i[276] + i[352],
		sh = i[353],
		hh = i[354] + i[31] + i[355],
		rh = i[356],
		ah = i[101] + i[357] + i[45] + i[74],
		oh = i[358] + i[72] + i[358],
		fh = i[359],
		ch = i[360] + i[1] + i[168],
		uh = i[360] + i[25] + i[222] + i[1] + i[168],
		_h = i[361] + i[83] + i[161],
		lh = i[362] + i[31] + i[363],
		dh = i[362] + i[25] + i[222] + i[31] + i[363],
		bh = i[364] + i[38] + i[39],
		vh = i[49] + i[83] + i[270] + i[31] + i[365],
		yh = i[49] + i[366],
		gh = i[105] + i[127] + i[128],
		Eh = i[29] + i[111],
		xh = i[98] + i[367],
		mh = i[40] + i[41] + i[25] + i[26],
		ph = i[52] + i[203],
		wh = i[31] + i[368] + i[201] + i[202],
		Th = i[52] + i[203] + i[201] + i[202],
		Nh = i[369] + i[177],
		Ah = i[357] + i[370],
		Oh = i[371] + i[370],
		Ih = i[101] + i[370] + i[45] + i[372] + i[45] + i[74] + i[72],
		Lh = i[101] + i[373] + i[45] + i[372] + i[45] + i[74] + i[72],
		Mh = i[374],
		Sh = i[49] + i[201] + i[375] + i[329] + i[330],
		Dh = i[376] + i[52] + i[377],
		Ph = i[378] + i[379] + i[40] + i[41],
		Ch = i[170] + i[380] + i[230],
		Rh = i[381],
		Fh = i[382],
		Bh = i[383] + i[72] + i[384],
		kh = i[383],
		Gh = i[385],
		Wh = i[386],
		$h = i[386] + i[72] + i[378],
		Xh = i[386] + i[72] + i[164],
		Hh = i[387],
		Yh = i[387] + i[72] + i[378],
		Jh = i[387] + i[72] + i[164],
		Zh = i[387] + i[72] + i[378] + i[72] + i[164],
		Uh = i[387] + i[72] + i[164] + i[72] + i[378],
		jh = i[388] + i[72] + i[389],
		zh = i[388] + i[72] + i[131],
		Vh = i[388] + i[72] + i[117],
		Kh = i[388] + i[72] + i[118],
		Qh = i[390],
		qh = i[391],
		tr = i[392],
		ir = i[393],
		nr = i[384],
		er = i[394],
		sr = i[395],
		hr = i[396],
		rr = i[397],
		ar = i[398],
		or = i[399],
		fr = i[400],
		cr = i[401],
		ur = i[402],
		_r = i[403],
		lr = i[404],
		dr = i[405],
		br = i[406],
		vr = i[407],
		yr = i[408] + i[72] + i[409],
		gr = i[408] + i[72] + i[410],
		Er = i[408] + i[72] + i[115],
		xr = i[408] + i[72] + i[411],
		mr = i[408] + i[72] + i[412],
		pr = i[408] + i[72] + i[413],
		wr = i[408] + i[72] + i[210],
		Tr = i[408] + i[72] + i[414],
		Nr = i[408] + i[72] + i[415],
		Ar = i[408] + i[72] + i[416],
		Or = i[170] + i[29] + i[111],
		Ir = i[417] + i[21] + i[418] + i[21] + i[187] + i[21] + i[419],
		Lr = i[420],
		Mr = i[417] + i[21] + i[418] + i[21] + i[187] + i[21] + i[421],
		Sr = i[417] + i[21] + i[418] + i[21] + i[187] + i[21] + i[422],
		Dr = i[423],
		Pr = i[417] + i[21] + i[424] + i[21] + i[187] + i[21] + i[421],
		Cr = i[417] + i[21] + i[424] + i[21] + i[187] + i[21] + i[425],
		Rr = i[426],
		Fr = i[427],
		Br = i[428] + i[21] + i[429] + i[21] + i[187] + i[21] + i[430],
		kr = i[431],
		Gr = i[432] + i[21] + i[187] + i[21] + i[433],
		Wr = i[432] + i[21] + i[433] + i[21] + i[434],
		$r = i[432] + i[21] + i[435],
		Xr = i[432] + i[21] + i[187],
		Hr = i[436] + i[21] + i[437],
		Yr = i[438] + i[21] + i[439],
		Jr = i[440] + i[21] + i[94],
		Zr = i[441] + i[29] + i[442] + i[127] + i[443],
		Ur = i[444],
		jr = i[95],
		zr = i[323],
		Vr = i[115] + i[104],
		Kr = i[217] + i[58] + i[445] + i[31] + i[446] + i[29] + i[442] + i[127] + i[443],
		Qr = i[22] + i[1] + i[447],
		qr = i[21] + i[423] + i[127],
		ta = i[21] + i[137] + i[448] + i[449],
		ia = i[21] + i[450] + i[29] + i[111],
		na = i[360] + i[29] + i[111],
		ea = i[451] + i[29] + i[111],
		sa = i[21] + i[452] + i[115] + i[124],
		ha = i[21] + i[453],
		ra = i[21] + i[452] + i[410] + i[124],
		aa = i[21] + i[452] + i[410] + i[97],
		oa = i[21] + i[81] + i[211] + i[410],
		fa = i[21] + i[452] + i[115] + i[97],
		ca = i[454],
		ua = i[455] + i[83] + i[81],
		_a = i[344] + i[83] + i[81],
		la = i[456] + i[83] + i[81],
		da = i[457] + i[1] + i[458] + i[83] + i[81],
		ba = i[21] + i[81] + i[211] + i[115],
		va = i[23] + i[459] + i[29] + i[111],
		ya = i[23] + i[459] + i[29] + i[111] + i[410],
		ga = i[23] + i[459] + i[29] + i[111] + i[115],
		Ea = i[456] + i[211] + i[234],
		xa = i[62] + i[460],
		ma = i[461] + i[127] + i[128],
		pa = i[462] + i[31] + i[87],
		wa = i[462] + i[127] + i[128],
		Ta = i[463],
		Na = i[296],
		Aa = i[62] + i[14] + i[358] + i[14] + i[410] + i[14] + i[115],
		Oa = i[461] + i[31] + i[87],
		Ia = i[62] + i[464],
		La = i[461],
		Ma = i[62] + i[465],
		Sa = i[466],
		Da = i[467],
		Pa = i[468] + i[21] + i[439],
		Ca = i[468] + i[21] + i[469],
		Ra = i[468] + i[21] + i[470],
		Fa = i[471] + i[1] + i[472],
		Ba = i[473],
		ka = i[21] + i[81] + i[474],
		Ga = i[205] + i[58] + i[97] + i[127] + i[128],
		Wa = i[21] + i[475],
		$a = i[98] + i[476] + i[45] + i[357] + i[45] + i[74] + i[477],
		Xa = i[21] + i[478],
		Ha = i[479],
		Ya = i[480],
		Ja = i[481],
		Za = i[482],
		Ua = i[483],
		ja = i[484],
		za = i[485] + i[98] + i[99],
		Va = i[486] + i[201] + i[487],
		Ka = i[389] + i[29] + i[120],
		Qa = i[478],
		qa = i[488] + i[98] + i[476] + i[52] + i[203],
		to = i[131] + i[29] + i[120],
		io = i[489] + i[201] + i[490] + i[83] + i[161],
		no = i[371] + i[83] + i[240],
		eo = i[491],
		so = i[42] + i[98] + i[476] + i[52] + i[203],
		ho = i[492],
		ro = i[468] + i[21] + i[129] + i[21] + i[94],
		ao = i[21] + i[122],
		oo = i[21] + i[123],
		fo = i[385] + i[1] + i[472],
		co = i[385] + i[58] + i[493],
		uo = i[385] + i[13] + i[494] + i[214],
		_o = i[385] + i[13] + i[494] + i[288],
		lo = i[471] + i[1] + i[472] + i[58] + i[495] + i[201] + i[241],
		bo = i[468] + i[21] + i[496],
		vo = i[473] + i[98] + i[476],
		yo = i[21] + i[497] + i[1] + i[498],
		go = i[499] + i[31] + i[297],
		Eo = i[129] + i[21] + i[500] + i[21] + i[501],
		xo = i[502] + i[83] + i[503],
		mo = i[504],
		po = i[357],
		wo = i[46] + i[40] + i[177],
		To = i[505],
		No = i[42] + i[58] + i[506],
		Ao = i[42] + i[1] + i[507],
		Oo = i[296] + i[201] + i[241],
		Io = i[508] + i[72] + i[509],
		Lo = i[473] + i[45] + i[504] + i[45] + i[74] + i[477],
		Mo = i[510],
		So = i[21] + i[81] + i[511],
		Do = i[512] + i[98] + i[476],
		Po = i[42] + i[34] + i[513] + i[98] + i[514],
		Co = i[515],
		Ro = i[516],
		Fo = i[517],
		Bo = i[22] + i[40] + i[518] + i[519] + i[520],
		ko = i[521],
		Go = i[22] + i[127] + i[522] + i[519] + i[520],
		Wo = i[170] + i[1] + i[472] + i[31] + i[389],
		$o = i[523] + i[21] + i[187] + i[21] + i[524],
		Xo = i[523] + i[21] + i[187] + i[21] + i[525],
		Ho = i[524] + i[21] + i[523] + i[21] + i[526],
		Yo = i[525] + i[21] + i[523],
		Jo = i[527] + i[21] + i[524] + i[21] + i[523],
		Zo = i[527] + i[21] + i[524] + i[21] + i[523] + i[21] + i[528],
		Uo = i[527] + i[21] + i[525] + i[21] + i[523],
		jo = i[529],
		zo = i[530],
		Vo = i[531],
		Ko = i[532] + i[21] + i[417] + i[21] + i[533],
		Qo = i[532] + i[21] + i[534] + i[21] + i[533],
		qo = i[532] + i[21] + i[535] + i[21] + i[533],
		tf = i[532] + i[21] + i[536],
		nf = i[537] + i[83] + i[538],
		ef = i[49] + i[38] + i[539],
		sf = i[181] + i[21] + i[532] + i[21] + i[187],
		hf = i[540],
		rf = i[42] + i[40] + i[541],
		af = i[456],
		of = i[542] + i[21] + i[543],
		ff = i[542] + i[21] + i[543] + i[21] + i[544],
		cf = i[542] + i[21] + i[543] + i[21] + i[435] + i[21] + i[545],
		uf = i[542] + i[21] + i[543] + i[21] + i[524] + i[21] + i[545],
		_f = i[542] + i[21] + i[543] + i[21] + i[546],
		lf = i[67] + i[373],
		df = i[200] + i[31] + i[547] + i[58] + i[493],
		bf = i[200] + i[1] + i[472],
		vf = i[200] + i[31] + i[547] + i[13] + i[494] + i[214],
		yf = i[432] + i[21] + i[187] + i[21] + i[436],
		gf = i[548],
		Ef = i[456] + i[1] + i[549],
		xf = i[456] + i[550] + i[551],
		mf = i[548] + i[31] + i[87],
		pf = i[64] + i[65] + i[358] + i[66] + i[358] + i[66] + i[358] + i[66] + i[358] + i[70],
		wf = i[462] + i[1] + i[472],
		Tf = i[462],
		Nf = i[462] + i[519] + i[520],
		Af = i[21] + i[462] + i[519] + i[520],
		Of = i[456] + i[52] + i[379],
		If = i[456] + i[52] + i[379] + i[1] + i[549],
		Lf = i[456] + i[52] + i[379] + i[550] + i[551],
		Mf = i[456] + i[52] + i[379] + i[13] + i[494],
		Sf = i[552] + i[29] + i[553],
		Df = i[49] + i[29] + i[111] + i[98] + i[347] + i[31] + i[554],
		Pf = i[49] + i[29] + i[111] + i[98] + i[347] + i[29] + i[553],
		Cf = i[21] + i[555] + i[31] + i[89],
		Rf = i[21] + i[556] + i[29] + i[557] + i[211] + i[234],
		Ff = i[558],
		Bf = i[559],
		kf = i[560] + i[72] + i[561],
		Gf = i[562] + i[72] + i[561],
		Wf = i[542] + i[21] + i[543] + i[21] + i[563],
		$f = i[564],
		Xf = i[310],
		Hf = i[542] + i[21] + i[543] + i[21] + i[565],
		Yf = i[566],
		Jf = i[205] + i[83] + i[238],
		Zf = i[65],
		Uf = i[567],
		jf = i[21] + i[347] + i[568],
		zf = i[569] + i[29] + i[553],
		Vf = i[570],
		Kf = i[426] + i[40] + i[571],
		Qf = i[62] + i[410] + i[1] + i[210] + i[58] + i[572] + i[52],
		qf = i[62] + i[573],
		tc = i[62] + i[574] + i[25] + i[415] + i[58],
		ic = i[62] + i[575] + i[58] + i[576],
		nc = i[62] + i[575] + i[34] + i[577],
		ec = i[62] + i[578] + i[1] + i[579],
		sc = i[62] + i[580],
		hc = i[62] + i[410] + i[52] + i[210] + i[1] + i[572] + i[68],
		rc = i[62] + i[581] + i[58] + i[358],
		ac = i[62] + i[582] + i[583],
		oc = i[62] + i[410] + i[68] + i[210] + i[584] + i[115],
		fc = i[62] + i[575] + i[34] + i[585],
		cc = i[62] + i[586],
		uc = i[62] + i[115] + i[587] + i[415] + i[588],
		_c = i[62] + i[589],
		lc = i[590],
		dc = i[62] + i[591] + i[52] + i[579],
		bc = i[62] + i[592],
		vc = i[62] + i[410] + i[68] + i[593] + i[34] + i[412],
		yc = i[62] + i[594] + i[595] + i[115],
		gc = i[62] + i[596] + i[597],
		Ec = i[62] + i[410] + i[25] + i[210] + i[598] + i[358],
		xc = i[62] + i[599],
		mc = i[62] + i[14] + i[414] + i[14] + i[415] + i[14] + i[415],
		pc = i[62] + i[210] + i[34] + i[600],
		wc = i[62] + i[412] + i[68] + i[412] + i[1] + i[412] + i[58],
		Tc = i[62] + i[601],
		Nc = i[62] + i[602],
		Ac = i[62] + i[210] + i[68] + i[210] + i[25] + i[210] + i[68],
		Oc = i[62] + i[412] + i[1] + i[603],
		Ic = i[62] + i[604],
		Lc = i[62] + i[414] + i[52] + i[414] + i[52] + i[414] + i[52],
		Mc = i[62] + i[605],
		Sc = i[62] + i[606],
		Dc = i[62] + i[607],
		Pc = i[62] + i[572] + i[25] + i[572] + i[52] + i[572] + i[52],
		Cc = i[62] + i[34] + i[414] + i[34] + i[413] + i[34] + i[412],
		Rc = i[62] + i[34] + i[572] + i[34] + i[210] + i[34] + i[413],
		Fc = i[62] + i[34] + i[414] + i[34] + i[412] + i[34] + i[411],
		Bc = i[62] + i[608],
		kc = i[62] + i[25] + i[572] + i[609],
		Gc = i[62] + i[572] + i[610] + i[358] + i[530] + i[358],
		Wc = i[611] + i[1] + i[458] + i[83] + i[81],
		$c = i[62] + i[147] + i[572] + i[612],
		Xc = i[62] + i[411] + i[587] + i[411] + i[530] + i[613],
		Hc = i[62] + i[58] + i[115] + i[614],
		Yc = i[62] + i[115] + i[25] + i[415] + i[615],
		Jc = i[616] + i[34] + i[617],
		Zc = i[62] + i[618],
		Uc = i[62] + i[140] + i[413] + i[140] + i[413] + i[140] + i[210],
		jc = i[619] + i[218],
		zc = i[21] + i[81] + i[620],
		Vc = i[23] + i[109],
		Kc = i[23] + i[454] + i[214],
		Qc = i[23] + i[454] + i[288],
		qc = i[23] + i[621] + i[58] + i[97] + i[34] + i[622] + i[29] + i[111],
		tu = i[23] + i[623] + i[31] + i[89],
		iu = i[23] + i[623] + i[34] + i[622] + i[29] + i[111],
		nu = i[23] + i[624],
		eu = i[625],
		su = i[23] + i[383],
		hu = i[23] + i[626] + i[211] + i[234],
		ru = i[23] + i[627] + i[29] + i[134],
		au = i[21] + i[81] + i[214] + i[628] + i[519] + i[520] + i[98] + i[629] + i[68] + i[207],
		ou = i[23] + i[383] + i[127] + i[630],
		fu = i[21] + i[626] + i[214],
		cu = i[23] + i[626] + i[214],
		uu = i[21] + i[626] + i[288],
		_u = i[23] + i[626] + i[288],
		lu = i[21] + i[81] + i[411] + i[31] + i[631],
		du = i[209] + i[347] + i[632] + i[633],
		bu = i[42] + i[127] + i[128],
		vu = i[634] + i[519] + i[520],
		yu = i[21] + i[81] + i[214] + i[628] + i[519] + i[520],
		gu = i[23] + i[623] + i[127] + i[635],
		Eu = i[621] + i[58] + i[97] + i[29] + i[553],
		xu = i[21] + i[81] + i[636],
		mu = i[616] + i[52] + i[637],
		pu = i[205] + i[40] + i[638] + i[52] + i[379],
		wu = i[42] + i[40] + i[638] + i[52] + i[379],
		Tu = i[80] + i[52] + i[379],
		Nu = i[78] + i[40] + i[638] + i[52] + i[379],
		Au = i[80] + i[52] + i[379] + i[13] + i[494],
		Ou = i[78] + i[40] + i[638] + i[52] + i[379] + i[13] + i[494],
		Iu = i[639],
		Lu = i[640] + i[1] + i[241] + i[34] + i[139],
		Mu = i[98] + i[641] + i[45] + i[642] + i[45] + i[643] + i[72],
		Su = i[21] + i[81] + i[119] + i[498],
		Du = i[21] + i[644] + i[13] + i[645],
		Pu = i[21] + i[81] + i[214] + i[646] + i[98] + i[476],
		Cu = i[647] + i[58] + i[648],
		Ru = i[647] + i[58] + i[649],
		Fu = i[647],
		Bu = i[647] + i[219] + i[650],
		ku = i[651],
		Gu = i[652],
		Wu = i[33] + i[98] + i[653],
		$u = i[654],
		Xu = i[485] + i[519] + i[655],
		Hu = i[656],
		Yu = i[657],
		Ju = i[658],
		Zu = i[240] + i[83] + i[161],
		Uu = i[659],
		ju = i[660] + i[378] + i[661],
		zu = i[660] + i[52] + i[203],
		Vu = i[662],
		Ku = i[663],
		Qu = i[664] + i[1] + i[241],
		qu = i[665],
		t_ = i[666],
		i_ = i[667] + i[68] + i[207],
		n_ = i[668],
		e_ = i[669],
		s_ = i[667] + i[31] + i[89],
		h_ = i[670] + i[201] + i[340] + i[1] + i[241] + i[31] + i[89],
		r_ = i[671],
		a_ = i[149] + i[1] + i[672] + i[1] + i[241],
		o_ = i[240],
		f_ = i[673],
		c_ = i[219] + i[674] + i[45] + i[675] + i[159] + i[358] + i[124],
		u_ = i[676],
		__ = i[38] + i[677] + i[45] + i[530] + i[45] + i[676] + i[45] + i[678] + i[72],
		l_ = i[560] + i[127] + i[679],
		d_ = i[680] + i[68] + i[207],
		b_ = i[268],
		v_ = i[654] + i[329] + i[330],
		y_ = i[681] + i[1] + i[241],
		g_ = i[682] + i[164] + i[683] + i[477],
		E_ = i[684],
		x_ = i[682] + i[29] + i[685] + i[45] + i[52] + i[686] + i[477],
		m_ = i[687] + i[52] + i[686],
		p_ = i[682],
		w_ = i[688],
		T_ = i[689],
		N_ = i[690],
		A_ =
			i[14] +
			i[691] +
			i[140] +
			i[412] +
			i[587] +
			i[692] +
			i[693] +
			i[414] +
			i[530] +
			i[694] +
			i[587] +
			i[695] +
			i[147] +
			i[411] +
			i[696] +
			i[572] +
			i[697] +
			i[698] +
			i[699] +
			i[700] +
			i[701] +
			i[358] +
			i[140] +
			i[413] +
			i[14] +
			i[702] +
			i[530] +
			i[703] +
			i[704] +
			i[705] +
			i[147] +
			i[706] +
			i[707] +
			i[411] +
			i[708] +
			i[358] +
			i[709] +
			i[710] +
			i[140] +
			i[711] +
			i[712] +
			i[713] +
			i[714] +
			i[411] +
			i[587] +
			i[715] +
			i[14] +
			i[716] +
			i[717] +
			i[210] +
			i[140] +
			i[718] +
			i[14] +
			i[719] +
			i[720] +
			i[572] +
			i[721] +
			i[722] +
			i[14] +
			i[572] +
			i[147] +
			i[413] +
			i[104] +
			i[410] +
			i[587] +
			i[412] +
			i[587] +
			i[723] +
			i[140] +
			i[115] +
			i[104] +
			i[705] +
			i[724] +
			i[415] +
			i[104] +
			i[411] +
			i[587] +
			i[66] +
			i[725] +
			i[410] +
			i[530] +
			i[726] +
			i[104] +
			i[727] +
			i[530] +
			i[728] +
			i[14] +
			i[729] +
			i[704] +
			i[730] +
			i[731] +
			i[732] +
			i[733] +
			i[412] +
			i[734] +
			i[735] +
			i[736] +
			i[737] +
			i[530] +
			i[414] +
			i[738] +
			i[411] +
			i[147] +
			i[358] +
			i[739] +
			i[740] +
			i[741] +
			i[742] +
			i[587] +
			i[743] +
			i[744] +
			i[358] +
			i[147] +
			i[745] +
			i[746] +
			i[747] +
			i[725] +
			i[748] +
			i[749] +
			i[750] +
			i[147] +
			i[358] +
			i[751] +
			i[752] +
			i[753] +
			i[754] +
			i[147] +
			i[755] +
			i[756] +
			i[572] +
			i[140] +
			i[757] +
			i[147] +
			i[758] +
			i[759] +
			i[210] +
			i[760] +
			i[761] +
			i[530] +
			i[762] +
			i[587] +
			i[410] +
			i[763] +
			i[764] +
			i[765] +
			i[415] +
			i[147] +
			i[766] +
			i[587] +
			i[767] +
			i[759] +
			i[66] +
			i[415] +
			i[768] +
			i[572] +
			i[14] +
			i[115] +
			i[14] +
			i[769] +
			i[587] +
			i[770] +
			i[714] +
			i[771] +
			i[712] +
			i[410] +
			i[147] +
			i[772] +
			i[587] +
			i[412] +
			i[773] +
			i[774] +
			i[104] +
			i[775] +
			i[776] +
			i[777] +
			i[778] +
			i[779] +
			i[780] +
			i[781] +
			i[140] +
			i[572] +
			i[724] +
			i[613] +
			i[147] +
			i[782] +
			i[14] +
			i[783] +
			i[140] +
			i[413] +
			i[190] +
			i[784] +
			i[587] +
			i[785] +
			i[14] +
			i[786] +
			i[530] +
			i[411] +
			i[147] +
			i[572] +
			i[530] +
			i[787] +
			i[788] +
			i[789] +
			i[530] +
			i[790] +
			i[530] +
			i[791] +
			i[792] +
			i[793] +
			i[794] +
			i[795] +
			i[147] +
			i[796] +
			i[147] +
			i[797] +
			i[140] +
			i[415] +
			i[140] +
			i[798] +
			i[707] +
			i[799] +
			i[147] +
			i[411] +
			i[104] +
			i[800] +
			i[721] +
			i[764] +
			i[14],
		O_ = i[682] + i[40] + i[801] + i[45] + i[67] + i[159],
		I_ =
			i[802] +
			i[803] +
			i[804] +
			i[802] +
			i[411] +
			i[34] +
			i[802] +
			i[803] +
			i[805] +
			i[72] +
			i[245] +
			i[72] +
			i[657] +
			i[802] +
			i[115] +
			i[1] +
			i[806] +
			i[72] +
			i[245] +
			i[72] +
			i[657] +
			i[802] +
			i[115] +
			i[1] +
			i[807] +
			i[72] +
			i[245] +
			i[72] +
			i[657],
		L_ = i[808],
		M_ = i[809],
		S_ = i[205] + i[83] + i[84],
		D_ = i[640] + i[34] + i[139],
		P_ = i[810] + i[219],
		C_ = i[811],
		R_ = i[812],
		F_ = i[813],
		B_ = i[245],
		k_ = i[814],
		G_ = i[815] + i[72] + i[358] + i[72] + i[358] + i[72] + i[410],
		W_ = i[816],
		$_ = i[817],
		X_ = i[619] + i[818] + i[45] + i[106] + i[45] + i[819] + i[413],
		H_ = i[21] + i[81] + i[214] + i[221] + i[1] + i[447],
		Y_ = i[820],
		J_ = i[821],
		Z_ = i[822] + i[211] + i[823],
		U_ = i[815] + i[72] + i[705] + i[72] + i[410],
		j_ = i[824],
		z_ = i[166] + i[38] + i[241],
		V_ = i[358] + i[95],
		K_ = i[825],
		Q_ = i[826] + i[25] + i[222],
		q_ = i[827],
		tl = i[828],
		il = i[829],
		nl = i[830] + i[40] + i[638],
		el = i[209] + i[137] + i[831] + i[832],
		sl = i[833] + i[29] + i[834],
		hl = i[42] + i[1] + i[835] + i[29] + i[111],
		rl = i[136],
		al = i[42] + i[34] + i[50] + i[29] + i[111],
		ol = i[42] + i[29] + i[111],
		fl = i[619] + i[218] + i[1] + i[447],
		cl = i[836],
		ul = i[358] + i[45] + i[358],
		_l = i[619] + i[218] + i[1] + i[447] + i[29] + i[324],
		ll = i[837] + i[802],
		dl = i[838],
		bl = i[619] + i[218] + i[519] + i[839],
		vl = i[21] + i[347] + i[29] + i[840] + i[40] + i[41],
		yl = i[21] + i[841],
		gl = i[205] + i[29] + i[191],
		El = i[21] + i[210] + i[211] + i[842],
		xl = i[623],
		ml = i[843],
		pl = i[841],
		wl = i[21] + i[137] + i[52] + i[840] + i[349],
		Tl = i[844],
		Nl = i[21] + i[81] + i[845],
		Al = i[209] + i[278] + i[410],
		Ol = i[21] + i[81] + i[846],
		Il = i[21] + i[81] + i[847],
		Ll = i[21] + i[81] + i[848],
		Ml = i[21] + i[81] + i[849],
		Sl = i[21] + i[81] + i[214] + i[850],
		Dl = i[471],
		Pl = i[21] + i[104] + i[851] + i[447] + i[31] + i[89] + i[68] + i[207],
		Cl = i[205] + i[31] + i[89],
		Rl = i[852] + i[83] + i[238],
		Fl = i[21] + i[81] + i[119] + i[273] + i[201] + i[853],
		Bl = i[209] + i[81] + i[119] + i[854] + i[201] + i[853],
		kl = i[855],
		Gl = i[844] + i[65],
		Wl = i[856],
		$l = i[21] + i[81] + i[119] + i[572],
		Xl = i[857] + i[25] + i[222],
		Hl = i[858] + i[98] + i[99],
		Yl = i[21] + i[81] + i[119] + i[859],
		Jl = i[860] + i[83] + i[861],
		Zl = i[862] + i[863] + i[494],
		Ul = i[862] + i[214],
		jl = i[862] + i[864] + i[494],
		zl = i[862] + i[288],
		Vl = i[21] + i[81] + i[865],
		Kl = i[67] + i[40] + i[866],
		Ql = i[867] + i[98] + i[104],
		ql = i[209] + i[137] + i[414],
		td = i[21] + i[81] + i[214] + i[358],
		id = i[21] + i[104] + i[868] + i[506] + i[68] + i[207],
		nd = i[106] + i[25] + i[107] + i[127] + i[869],
		ed = i[463] + i[83] + i[81],
		sd = i[21] + i[81] + i[214] + i[870] + i[1] + i[447],
		hd = i[233] + i[378] + i[871],
		rd = i[42] + i[519] + i[872] + i[58] + i[506],
		ad = i[21] + i[841] + i[1] + i[873],
		od = i[323] + i[58] + i[506],
		fd = i[82] + i[127] + i[128],
		cd = i[21] + i[67] + i[98] + i[874] + i[127] + i[128],
		ud = i[875] + i[21] + i[876],
		_d = i[877] + i[72] + i[315],
		ld = i[875] + i[21] + i[878],
		dd = i[877] + i[72] + i[879],
		bd = i[21] + i[137] + i[52],
		vd = i[21] + i[389] + i[1] + i[447],
		yd = i[149],
		gd = i[880],
		Ed = i[23] + i[179],
		xd = i[531] + i[98] + i[99],
		md = i[42] + i[25] + i[222] + i[58] + i[97] + i[98] + i[104],
		pd = i[21] + i[81] + i[881],
		wd = i[21] + i[81] + i[882],
		Td = i[21] + i[413] + i[119],
		Nd = i[21] + i[278] + i[410] + i[68] + i[883],
		Ad = i[149] + i[34] + i[35],
		Od = i[67] + i[34] + i[35],
		Id = i[49] + i[40] + i[884],
		Ld = i[49] + i[58] + i[885] + i[25] + i[886],
		Md = i[867] + i[58] + i[506],
		Sd = i[21] + i[414] + i[211],
		Dd = i[21] + i[411] + i[550],
		Pd = i[21] + i[887] + i[34] + i[888],
		Cd = i[21] + i[195] + i[412],
		Rd = i[21] + i[572] + i[889] + i[90],
		Fd = i[890] + i[72] + i[540],
		Bd = i[21] + i[841] + i[1] + i[90],
		kd = i[21] + i[587] + i[414],
		Gd = i[209] + i[412] + i[68],
		Wd = i[471] + i[31] + i[297],
		$d = i[21] + i[81] + i[891],
		Xd = i[67] + i[1] + i[447],
		Hd = i[892],
		Yd = i[623] + i[127] + i[893],
		Jd = i[894] + i[31] + i[895] + i[38] + i[896],
		Zd = i[867] + i[1] + i[897],
		Ud = i[898],
		jd = i[27] + i[29] + i[30] + i[1] + i[198],
		zd = i[623] + i[52] + i[203],
		Vd = i[42] + i[25] + i[899] + i[58] + i[885],
		Kd = i[510] + i[25] + i[899] + i[58] + i[885],
		Qd = i[21] + i[81] + i[900],
		qd = i[106] + i[25] + i[107] + i[58] + i[97] + i[52] + i[901] + i[68] + i[902],
		tb = i[209] + i[144] + i[329],
		ib = i[0] + i[25] + i[899],
		nb = i[42] + i[98] + i[99] + i[58] + i[97] + i[98] + i[104],
		eb = i[903] + i[201] + i[202],
		sb = i[322] + i[212],
		hb = i[101] + i[102] + i[45] + i[904],
		rb = i[205] + i[98] + i[99] + i[58] + i[905],
		ab = i[106] + i[25] + i[107] + i[25] + i[899],
		ob = i[28] + i[29] + i[906],
		fb = i[841] + i[58] + i[506],
		cb = i[21] + i[144] + i[907] + i[202],
		ub = i[21] + i[81] + i[214] + i[870] + i[201],
		_b = i[908],
		lb = i[21] + i[616] + i[58] + i[506],
		db = i[909],
		bb = i[21] + i[81] + i[211] + i[412],
		vb = i[21] + i[81] + i[910],
		yb = i[186] + i[21] + i[187] + i[21] + i[93],
		gb = i[23] + i[505],
		Eb = i[49] + i[98] + i[641],
		xb = i[49] + i[52] + i[911] + i[13] + i[14],
		mb = i[205] + i[1] + i[168] + i[98] + i[99],
		pb = i[205] + i[31] + i[87],
		wb = i[106] + i[25] + i[107] + i[1] + i[168],
		Tb = i[623] + i[164] + i[912],
		Nb = i[867],
		Ab = i[46] + i[322],
		Ob = i[619] + i[72] + i[25] + i[222],
		Ib = i[913],
		Lb = i[914] + i[519] + i[915],
		Mb = i[916],
		Sb = i[23] + i[149],
		Db = i[619] + i[72] + i[25] + i[899],
		Pb = i[21] + i[81] + i[917],
		Cb = i[918] + i[25] + i[886],
		Rb = i[0] + i[29] + i[553] + i[31] + i[832],
		Fb = i[919] + i[83] + i[161],
		Bb = i[880] + i[72] + i[920],
		kb = i[921] + i[29] + i[553] + i[1] + i[198],
		Gb = i[170] + i[29] + i[553] + i[31] + i[922],
		Wb = i[46] + i[29] + i[553] + i[31] + i[922],
		$b = i[923],
		Xb = i[67],
		Hb = i[619] + i[218] + i[361],
		Yb = i[23] + i[812],
		Jb = i[21] + i[924] + i[38] + i[925],
		Zb = i[919],
		Ub = i[926] + i[31] + i[927],
		jb = i[21] + i[81] + i[211] + i[414],
		zb = i[928],
		Vb = i[0] + i[68] + i[929],
		Kb = i[67] + i[68] + i[929],
		Qb = i[21] + i[928],
		qb = i[619] + i[72] + i[38] + i[241],
		tv = i[930] + i[72] + i[170],
		iv = i[930] + i[72] + i[46],
		nv = i[21] + i[81] + i[211] + i[413],
		ev = i[627] + i[29] + i[134],
		sv = i[931] + i[21] + i[932],
		hv = i[440] + i[21] + i[533],
		rv = i[488] + i[31] + i[933],
		av = i[619] + i[72] + i[31] + i[631] + i[38] + i[241],
		ov = i[934] + i[83] + i[81],
		fv = i[427] + i[83] + i[81],
		cv = i[31] + i[631] + i[38] + i[241],
		uv = i[935],
		_v = i[936] + i[40] + i[937],
		lv = i[512],
		dv = i[938] + i[21] + i[939],
		bv = i[938] + i[21] + i[940],
		vv = i[938] + i[21] + i[941],
		yv = i[938] + i[21] + i[942],
		gv = i[938] + i[21] + i[943],
		Ev = i[938] + i[21] + i[944],
		xv = i[938] + i[21] + i[440] + i[21] + i[945],
		mv = i[938] + i[21] + i[440] + i[21] + i[410],
		pv = i[938] + i[21] + i[440] + i[21] + i[115],
		wv = i[938] + i[21] + i[440] + i[21] + i[412],
		Tv = i[938] + i[21] + i[440] + i[21] + i[210],
		Nv = i[619] + i[72] + i[58] + i[946],
		Av = i[833] + i[31] + i[895] + i[38] + i[896],
		Ov = i[947] + i[21] + i[948],
		Iv = i[947] + i[21] + i[949],
		Lv = i[947] + i[21] + i[950] + i[21] + i[94],
		Mv = i[623] + i[68] + i[207],
		Sv = i[23] + i[951] + i[83] + i[161],
		Dv = i[947] + i[21] + i[187],
		Pv = i[951],
		Cv = i[23] + i[952] + i[31] + i[89],
		Rv = i[619] + i[72] + i[519] + i[915],
		Fv = i[21] + i[81] + i[214] + i[412],
		Bv = i[952] + i[31] + i[89],
		kv = i[951] + i[83] + i[161],
		Gv = i[624],
		Wv = i[951] + i[98] + i[476],
		$v = i[519] + i[915],
		Xv = i[619] + i[72] + i[83] + i[240],
		Hv = i[510] + i[68] + i[953],
		Yv = i[23] + i[623],
		Jv = i[23] + i[954],
		Zv = i[62] + i[955],
		Uv = i[23] + i[627] + i[29] + i[111],
		jv = i[200] + i[83] + i[161],
		zv = i[200] + i[31] + i[547] + i[13] + i[494] + i[288],
		Vv = i[200] + i[58] + i[956],
		Kv = i[200] + i[58] + i[628] + i[1] + i[472],
		Qv = i[957] + i[31] + i[368],
		qv = i[957] + i[31] + i[368] + i[31] + i[933],
		ty = i[23] + i[958],
		iy = i[454] + i[288],
		ny = i[432] + i[21] + i[187] + i[21] + i[436] + i[21] + i[939],
		ey = i[21] + i[959],
		sy = i[383] + i[40] + i[638] + i[52] + i[379] + i[13] + i[494],
		hy = i[23] + i[634] + i[1] + i[472],
		ry = i[23] + i[623] + i[52] + i[203],
		ay = i[23] + i[634] + i[519] + i[520],
		oy = i[510] + i[31] + i[89],
		fy = i[27] + i[58] + i[506] + i[1] + i[90],
		cy = i[23] + i[623] + i[40] + i[541],
		uy = i[23] + i[623] + i[164] + i[912],
		_y = i[23] + i[856],
		ly = i[23] + i[960] + i[25] + i[196],
		dy = i[961],
		by = i[926] + i[164] + i[962],
		vy = i[27] + i[52] + i[203] + i[1] + i[90],
		yy = i[21] + i[81] + i[963],
		gy = i[40] + i[541],
		Ey = i[164] + i[912],
		xy = i[34] + i[622] + i[29] + i[111],
		my = i[31] + i[89],
		py = i[58] + i[628] + i[519] + i[520],
		wy = i[432] + i[21] + i[436],
		Ty = i[127] + i[635],
		Ny = i[186] + i[21] + i[187] + i[21] + i[964],
		Ay = i[42] + i[29] + i[30],
		Oy = i[160],
		Iy = i[965] + i[29] + i[30],
		Ly = i[966],
		My = i[903],
		Sy = i[42] + i[31] + i[87],
		Dy = i[200] + i[72] + i[560],
		Py = i[200] + i[72] + i[383],
		Cy = i[200] + i[72] + i[156],
		Ry = i[471] + i[72] + i[560],
		Fy = i[958],
		By = i[385] + i[72] + i[967],
		ky = i[385] + i[72] + i[560],
		Gy = i[385] + i[72] + i[454] + i[72] + i[124],
		Wy = i[385] + i[72] + i[454] + i[72] + i[97],
		$y = i[968] + i[72] + i[461],
		Xy = i[968] + i[72] + i[461] + i[72] + i[224],
		Hy = i[968] + i[72] + i[456] + i[72] + i[969],
		Yy = i[968] + i[72] + i[462] + i[72] + i[560],
		Jy = i[968] + i[72] + i[462] + i[72] + i[970],
		Zy = i[968] + i[72] + i[548],
		Uy = i[968] + i[72] + i[548] + i[72] + i[224],
		jy = i[621] + i[72] + i[151] + i[72] + i[880],
		zy = i[634] + i[72] + i[560],
		Vy = i[634] + i[72] + i[970],
		Ky = i[383] + i[72] + i[122],
		Qy = i[383] + i[72] + i[560],
		qy = i[383] + i[72] + i[456] + i[72] + i[969],
		tg = i[383] + i[72] + i[153],
		ig = i[456] + i[72] + i[971],
		ng = i[456] + i[72] + i[824],
		eg = i[456] + i[72] + i[969] + i[72] + i[971],
		sg = i[456] + i[72] + i[969] + i[72] + i[824],
		hg = i[504] + i[72] + i[383] + i[72] + i[122],
		rg = i[468] + i[21] + i[436] + i[21] + i[93],
		ag = i[504] + i[72] + i[383] + i[72] + i[224],
		og = i[468] + i[21] + i[436] + i[21] + i[417] + i[21] + i[972],
		fg = i[468] + i[21] + i[436] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		cg = i[468] + i[21] + i[437],
		ug = i[468] + i[21] + i[436] + i[21] + i[437],
		_g = i[504] + i[72] + i[153],
		lg = i[468] + i[21] + i[948],
		dg = i[504] + i[72] + i[624],
		bg = i[504] + i[72] + i[531] + i[72] + i[12],
		vg = i[468] + i[21] + i[974],
		yg = i[504] + i[72] + i[975],
		gg = i[468] + i[21] + i[976],
		Eg = i[504] + i[72] + i[958],
		xg = i[977] + i[21] + i[978],
		mg = i[979] + i[72] + i[109],
		pg = i[977] + i[21] + i[980],
		wg = i[979] + i[72] + i[521],
		Tg = i[977] + i[21] + i[981] + i[21] + i[982],
		Ng = i[977] + i[21] + i[983],
		Ag = i[979] + i[72] + i[856],
		Og = i[977] + i[21] + i[984] + i[21] + i[980],
		Ig = i[977] + i[21] + i[435],
		Lg = i[979] + i[72] + i[560],
		Mg = i[977] + i[21] + i[92] + i[21] + i[94],
		Sg = i[979] + i[72] + i[86] + i[72] + i[843],
		Dg = i[979] + i[72] + i[86] + i[72] + i[985],
		Pg = i[977] + i[21] + i[92] + i[21] + i[93],
		Cg = i[979] + i[72] + i[86] + i[72] + i[224],
		Rg = i[979] + i[72] + i[624],
		Fg = i[977] + i[21] + i[438] + i[21] + i[439],
		Bg = i[979] + i[72] + i[626] + i[72] + i[122],
		kg = i[979] + i[72] + i[626],
		Gg = i[977] + i[21] + i[437],
		Wg = i[979] + i[72] + i[153],
		$g = i[977] + i[21] + i[973] + i[21] + i[214],
		Xg = i[979] + i[72] + i[454] + i[72] + i[124],
		Hg = i[979] + i[72] + i[454] + i[72] + i[97],
		Yg = i[977] + i[21] + i[94],
		Jg = i[979] + i[72] + i[843],
		Zg = i[977] + i[21] + i[986] + i[21] + i[980],
		Ug = i[979] + i[72] + i[987] + i[72] + i[521],
		jg = i[977] + i[21] + i[436],
		zg = i[979] + i[72] + i[383],
		Vg = i[977] + i[21] + i[436] + i[21] + i[417] + i[21] + i[972],
		Kg = i[977] + i[21] + i[436] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		Qg = i[979] + i[72] + i[383] + i[72] + i[224],
		qg = i[977] + i[21] + i[988] + i[21] + i[523],
		tE = i[977] + i[21] + i[989],
		iE = i[979] + i[72] + i[954],
		nE = i[979] + i[72] + i[385] + i[72] + i[967],
		eE = i[977] + i[21] + i[433] + i[21] + i[435],
		sE = i[979] + i[72] + i[385] + i[72] + i[560],
		hE = i[977] + i[21] + i[433] + i[21] + i[973] + i[21] + i[214],
		rE = i[977] + i[21] + i[119] + i[21] + i[184],
		aE = i[979] + i[72] + i[531] + i[72] + i[12],
		oE = i[977] + i[21] + i[990] + i[21] + i[142],
		fE = i[979] + i[72] + i[27] + i[72] + i[389],
		cE = i[947] + i[21] + i[988] + i[21] + i[435],
		uE = i[947] + i[21] + i[437],
		_E = i[951] + i[72] + i[153],
		lE = i[947] + i[21] + i[991],
		dE = i[951] + i[72] + i[461],
		bE = i[947] + i[21] + i[991] + i[21] + i[93],
		vE = i[951] + i[72] + i[461] + i[72] + i[560],
		yE = i[947] + i[21] + i[991] + i[21] + i[417] + i[21] + i[972],
		gE = i[947] + i[21] + i[991] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		EE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[978],
		xE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[984] + i[21] + i[980],
		mE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[435],
		pE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[92] + i[21] + i[94],
		wE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[92] + i[21] + i[96],
		TE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[92] + i[21] + i[93],
		NE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[438] + i[21] + i[439],
		AE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[438],
		OE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[437],
		IE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[973] + i[21] + i[214],
		LE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[436],
		ME = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[436] + i[21] + i[93],
		SE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[988] + i[21] + i[435],
		DE = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[989],
		PE = i[919] + i[72] + i[122],
		CE = i[428] + i[21] + i[435],
		RE = i[919] + i[72] + i[560],
		FE = i[428] + i[21] + i[992],
		BE = i[919] + i[72] + i[548],
		kE = i[428] + i[21] + i[992] + i[21] + i[93],
		GE = i[919] + i[72] + i[548] + i[72] + i[224],
		WE = i[919] + i[72] + i[456] + i[72] + i[969],
		$E = i[428] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		XE = i[919] + i[72] + i[149] + i[72] + i[454],
		HE = i[428] + i[21] + i[533] + i[21] + i[973],
		YE = i[919] + i[72] + i[67] + i[72] + i[454],
		JE = i[428] + i[21] + i[993] + i[21] + i[435],
		ZE = i[919] + i[72] + i[462] + i[72] + i[560],
		UE = i[428] + i[21] + i[429] + i[21] + i[187],
		jE = i[919] + i[72] + i[918] + i[72] + i[156],
		zE = i[919] + i[72] + i[918] + i[72] + i[994],
		VE = i[428] + i[21] + i[995] + i[21] + i[996],
		KE = i[919] + i[72] + i[997] + i[72] + i[998],
		QE = i[428] + i[21] + i[999],
		qE = i[919] + i[72] + i[388],
		tx = i[919] + i[72] + i[1e3] + i[72] + i[1001],
		ix = i[428] + i[21] + i[1002] + i[21] + i[1003],
		nx = i[919] + i[72] + i[44] + i[72] + i[1004],
		ex = i[428] + i[21] + i[1002] + i[21] + i[130],
		sx = i[919] + i[72] + i[44] + i[72] + i[158],
		hx = i[428] + i[21] + i[1005],
		rx = i[919] + i[72] + i[1006],
		ax = i[919] + i[72] + i[1006] + i[72] + i[153],
		ox = i[428] + i[21] + i[1007] + i[21] + i[1008] + i[21] + i[428],
		fx = i[919] + i[72] + i[149] + i[72] + i[1009] + i[72] + i[919],
		cx = i[428] + i[21] + i[533] + i[21] + i[1008] + i[21] + i[428],
		ux = i[919] + i[72] + i[67] + i[72] + i[1009] + i[72] + i[919],
		_x = i[428] + i[21] + i[1007] + i[21] + i[1010],
		lx = i[919] + i[72] + i[149] + i[72] + i[1011],
		dx = i[428] + i[21] + i[533] + i[21] + i[1010],
		bx = i[919] + i[72] + i[67] + i[72] + i[1011],
		vx = i[440] + i[21] + i[1007],
		yx = i[408] + i[72] + i[149],
		gx = i[440] + i[21] + i[1007] + i[21] + i[94],
		Ex = i[408] + i[72] + i[149] + i[72] + i[843],
		xx = i[440] + i[21] + i[1007] + i[21] + i[973],
		mx = i[408] + i[72] + i[149] + i[72] + i[454],
		px = i[440] + i[21] + i[1007] + i[21] + i[991],
		wx = i[408] + i[72] + i[149] + i[72] + i[461],
		Tx = i[440] + i[21] + i[1007] + i[21] + i[991] + i[21] + i[93],
		Nx = i[440] + i[21] + i[1007] + i[21] + i[992],
		Ax = i[408] + i[72] + i[149] + i[72] + i[548],
		Ox = i[440] + i[21] + i[1007] + i[21] + i[992] + i[21] + i[93],
		Ix = i[440] + i[21] + i[1007] + i[21] + i[417] + i[21] + i[972],
		Lx = i[408] + i[72] + i[149] + i[72] + i[456] + i[72] + i[969],
		Mx = i[440] + i[21] + i[1007] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		Sx = i[440] + i[21] + i[1007] + i[21] + i[993] + i[21] + i[523],
		Dx = i[408] + i[72] + i[149] + i[72] + i[456] + i[72] + i[971],
		Px = i[440] + i[21] + i[1007] + i[21] + i[417] + i[21] + i[424],
		Cx = i[408] + i[72] + i[149] + i[72] + i[456] + i[72] + i[824],
		Rx = i[408] + i[72] + i[67],
		Fx = i[440] + i[21] + i[533] + i[21] + i[94],
		Bx = i[408] + i[72] + i[67] + i[72] + i[843],
		kx = i[440] + i[21] + i[533] + i[21] + i[973],
		Gx = i[408] + i[72] + i[67] + i[72] + i[454],
		Wx = i[408] + i[72] + i[67] + i[72] + i[461],
		$x = i[440] + i[21] + i[533] + i[21] + i[992],
		Xx = i[408] + i[72] + i[67] + i[72] + i[548],
		Hx = i[440] + i[21] + i[533] + i[21] + i[992] + i[21] + i[93],
		Yx = i[440] + i[21] + i[533] + i[21] + i[417] + i[21] + i[972],
		Jx = i[408] + i[72] + i[67] + i[72] + i[456] + i[72] + i[969],
		Zx = i[440] + i[21] + i[533] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		Ux = i[440] + i[21] + i[533] + i[21] + i[993] + i[21] + i[435],
		jx = i[408] + i[72] + i[67] + i[72] + i[462] + i[72] + i[560],
		zx = i[440] + i[21] + i[533] + i[21] + i[417] + i[21] + i[418],
		Vx = i[408] + i[72] + i[67] + i[72] + i[456] + i[72] + i[971],
		Kx = i[440] + i[21] + i[533] + i[21] + i[417] + i[21] + i[424],
		Qx = i[408] + i[72] + i[67] + i[72] + i[456] + i[72] + i[824],
		qx = i[432] + i[21] + i[433] + i[21] + i[973] + i[21] + i[214],
		tm = i[432] + i[21] + i[433] + i[21] + i[973] + i[21] + i[288],
		im = i[979],
		nm = i[560],
		em = i[86] + i[31] + i[89],
		sm = i[383] + i[40] + i[638] + i[52] + i[379],
		hm = i[977] + i[21] + i[436] + i[21] + i[93],
		rm = i[383] + i[1] + i[472],
		am = i[977] + i[21] + i[988] + i[21] + i[435],
		om = i[634] + i[1] + i[472],
		fm = i[960] + i[13] + i[347] + i[83] + i[1012],
		cm = i[433] + i[21] + i[434],
		um = i[433] + i[21] + i[435],
		_m = i[977] + i[21] + i[92] + i[21] + i[96],
		lm = i[86] + i[68] + i[91],
		dm = i[86] + i[31] + i[87],
		bm = i[987] + i[29] + i[134],
		vm = i[977] + i[21] + i[948],
		ym = i[626] + i[211] + i[234],
		gm = i[960] + i[29] + i[633],
		Em = i[383] + i[127] + i[630],
		xm = i[454] + i[214],
		mm = i[977] + i[21] + i[973] + i[21] + i[288],
		pm = i[954],
		wm = i[977] + i[21] + i[433] + i[21] + i[973] + i[21] + i[288],
		Tm = i[1013] + i[21] + i[435] + i[21] + i[542] + i[21] + i[543],
		Nm = i[21] + i[115] + i[13],
		Am = i[988] + i[21] + i[523],
		Om = i[948],
		Im = i[436],
		Lm = i[436] + i[21] + i[435],
		Mm = i[436] + i[21] + i[417] + i[21] + i[972],
		Sm = i[436] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		Dm = i[21] + i[104] + i[25],
		Pm = i[938] + i[21] + i[991],
		Cm = i[938] + i[21] + i[991] + i[21] + i[93],
		Rm = i[938] + i[21] + i[993] + i[21] + i[435],
		Fm = i[1014] + i[21] + i[1015] + i[21] + i[1016],
		Bm = i[975] + i[83] + i[161],
		km = i[938] + i[21] + i[993] + i[21] + i[523],
		Gm = i[938] + i[21] + i[417] + i[21] + i[972],
		Wm = i[938] + i[21] + i[417] + i[21] + i[972] + i[21] + i[973],
		$m = i[417] + i[21] + i[418],
		Xm = i[468] + i[21] + i[988] + i[21] + i[523],
		Hm = i[468] + i[21] + i[119] + i[21] + i[184],
		Ym = i[1017] + i[58] + i[1018],
		Jm = i[21] + i[413] + i[214],
		Zm = i[968],
		Um = i[947] + i[21] + i[988] + i[21] + i[523],
		jm = i[21] + i[412] + i[68],
		zm = i[428] + i[21] + i[439],
		Vm = i[149] + i[34] + i[1019],
		Km = i[67] + i[34] + i[1019],
		Qm = i[417] + i[21] + i[972] + i[21] + i[418],
		qm = i[456] + i[68] + i[1020] + i[1] + i[472],
		tp = i[149] + i[34] + i[139] + i[25] + i[899],
		ip = i[67] + i[34] + i[139] + i[25] + i[899],
		np = i[428] + i[21] + i[1021] + i[21] + i[1022],
		ep = i[428] + i[21] + i[1007] + i[21] + i[973],
		sp = i[149] + i[34] + i[1019] + i[31] + i[89],
		hp = i[149] + i[34] + i[1019] + i[13] + i[494],
		rp = i[149] + i[34] + i[1019] + i[31] + i[554],
		ap = i[149] + i[34] + i[1019] + i[31] + i[554] + i[31] + i[87],
		op = i[149] + i[34] + i[1019] + i[13] + i[1023],
		fp = i[440] + i[21] + i[1007] + i[21] + i[993] + i[21] + i[435],
		cp = i[149] + i[34] + i[1019] + i[68] + i[1020] + i[1] + i[472],
		up = i[149] + i[34] + i[1019] + i[40] + i[638] + i[52] + i[379],
		_p = i[149] + i[34] + i[1019] + i[40] + i[638] + i[550] + i[551],
		lp = i[440] + i[21] + i[1007] + i[21] + i[417] + i[21] + i[418],
		dp = i[149] + i[34] + i[1019] + i[40] + i[638] + i[1] + i[549],
		bp = i[67] + i[34] + i[1019] + i[31] + i[89],
		vp = i[67] + i[34] + i[1019] + i[13] + i[494],
		yp = i[440] + i[21] + i[533] + i[21] + i[991],
		gp = i[67] + i[34] + i[1019] + i[31] + i[554],
		Ep = i[440] + i[21] + i[533] + i[21] + i[991] + i[21] + i[93],
		xp = i[67] + i[34] + i[1019] + i[31] + i[554] + i[31] + i[87],
		mp = i[67] + i[34] + i[1019] + i[13] + i[1023],
		pp = i[67] + i[34] + i[1019] + i[13] + i[1023] + i[31] + i[87],
		wp = i[67] + i[34] + i[1019] + i[68] + i[1020] + i[1] + i[472],
		Tp = i[440] + i[21] + i[533] + i[21] + i[993] + i[21] + i[523],
		Np = i[67] + i[34] + i[1019] + i[68] + i[1020] + i[519] + i[520],
		Ap = i[67] + i[34] + i[1019] + i[40] + i[638] + i[52] + i[379],
		Op = i[67] + i[34] + i[1019] + i[40] + i[638] + i[550] + i[551],
		Ip = i[67] + i[34] + i[1019] + i[40] + i[638] + i[1] + i[549],
		Lp = i[918] + i[40] + i[1024],
		Mp = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[973] + i[21] + i[288],
		Sp = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[988] + i[21] + i[523],
		Dp = i[988] + i[21] + i[435],
		Pp = i[623] + i[31] + i[631],
		Cp = i[417] + i[21] + i[972] + i[21] + i[424],
		Rp = i[938] + i[21] + i[417] + i[21] + i[993] + i[21] + i[435],
		Fp = i[938] + i[21] + i[992],
		Bp = i[938] + i[21] + i[992] + i[21] + i[93],
		kp = i[468] + i[21] + i[988] + i[21] + i[435],
		Gp = i[468] + i[21] + i[436] + i[21] + i[435],
		Wp = i[623] + i[1] + i[2] + i[98] + i[99],
		$p = i[623] + i[31] + i[89],
		Xp = i[23] + i[623] + i[1] + i[168],
		Hp = i[46] + i[58] + i[1025],
		Yp = i[27] + i[58] + i[1025] + i[29] + i[30] + i[1] + i[198],
		Jp = i[21] + i[81] + i[211] + i[572],
		Zp = i[965] + i[29] + i[906],
		Up = i[170] + i[58] + i[1025],
		jp = i[170] + i[1] + i[168],
		zp = i[1026],
		Vp = i[23] + i[200] + i[58] + i[956],
		Kp = i[23] + i[385] + i[13] + i[494] + i[214],
		Qp = i[23] + i[200] + i[31] + i[547] + i[13] + i[494] + i[214],
		qp = i[23] + i[200] + i[31] + i[547] + i[13] + i[494] + i[288],
		tw = i[23] + i[385] + i[58] + i[493],
		iw = i[322] + i[21] + i[1027] + i[21] + i[1028],
		nw = i[23] + i[623] + i[58] + i[506],
		ew = i[21] + i[81] + i[214] + i[1018],
		sw = i[482] + i[1] + i[90],
		hw = i[23] + i[471] + i[1] + i[472],
		rw = i[23] + i[471] + i[1] + i[472] + i[58] + i[495] + i[201] + i[241],
		aw = i[170] + i[127] + i[128],
		ow = i[502] + i[83] + i[503] + i[1] + i[2],
		fw = i[556],
		cw = i[62] + i[1029],
		uw = i[23] + i[843],
		_w = i[21] + i[556] + i[58] + i[506],
		lw = i[21] + i[81] + i[1030],
		dw = i[23] + i[623] + i[31] + i[297],
		bw = i[23] + i[623] + i[68] + i[1020] + i[519] + i[520],
		vw = i[935] + i[519] + i[520],
		yw = i[23] + i[462] + i[519] + i[520],
		gw = i[23] + i[975] + i[83] + i[161],
		Ew = i[23] + i[462] + i[1] + i[472],
		xw = i[31] + i[297],
		mw = i[68] + i[1020] + i[519] + i[520],
		pw = i[986] + i[21] + i[980],
		ww = i[86],
		Tw = i[1026] + i[83] + i[240],
		Nw = i[23] + i[86] + i[31] + i[89],
		Aw = i[23] + i[86] + i[68] + i[91],
		Ow = i[23] + i[86] + i[31] + i[87],
		Iw = i[417] + i[21] + i[469],
		Lw = i[23] + i[86],
		Mw = i[205] + i[201] + i[1031] + i[58] + i[506],
		Sw = i[242] + i[34] + i[1032],
		Dw = i[242] + i[58] + i[1033],
		Pw = i[1034],
		Cw = i[462] + i[83] + i[240],
		Rw = i[68] + i[1035],
		Fw = i[880] + i[58] + i[506],
		Bw = i[23] + i[623] + i[83] + i[81] + i[34] + i[1019],
		kw = i[23] + i[456] + i[211] + i[234],
		Gw = i[23] + i[623] + i[68] + i[1036] + i[34] + i[1019],
		Ww = i[23] + i[149] + i[34] + i[1019] + i[13] + i[494],
		$w = i[149] + i[34] + i[1019] + i[40] + i[541],
		Xw = i[23] + i[149] + i[34] + i[1019],
		Hw = i[23] + i[149] + i[34] + i[1019] + i[31] + i[89],
		Yw = i[23] + i[149] + i[34] + i[1019] + i[31] + i[631],
		Jw = i[149] + i[34] + i[1019] + i[31] + i[933],
		Zw = i[519] + i[520],
		Uw = i[149] + i[34] + i[1019] + i[68] + i[1020] + i[519] + i[520],
		jw = i[23] + i[67] + i[34] + i[1019],
		zw = i[23] + i[67] + i[34] + i[1019] + i[13] + i[494],
		Vw = i[67] + i[34] + i[1019] + i[40] + i[541],
		Kw = i[23] + i[67] + i[34] + i[1019] + i[31] + i[631],
		Qw = i[67] + i[34] + i[1019] + i[31] + i[933],
		qw = i[34] + i[1019] + i[31] + i[554],
		tT = i[34] + i[1019] + i[31] + i[554] + i[31] + i[87],
		iT = i[34] + i[1019] + i[31] + i[933],
		nT = i[34] + i[1019] + i[40] + i[638] + i[52] + i[379],
		eT = i[34] + i[1019] + i[40] + i[638] + i[52] + i[379] + i[13] + i[494],
		sT = i[34] + i[1019] + i[68] + i[1020] + i[1] + i[472],
		hT = i[34] + i[1019] + i[68] + i[1020] + i[519] + i[520],
		rT = i[34] + i[1019] + i[40] + i[638] + i[1] + i[549],
		aT = i[34] + i[1019] + i[40] + i[638] + i[550] + i[551],
		oT = i[34] + i[1019] + i[13] + i[1023],
		fT = i[34] + i[1019] + i[13] + i[1023] + i[31] + i[87],
		cT = i[23] + i[548],
		uT = i[68] + i[1036] + i[34] + i[1019],
		_T = i[83] + i[81] + i[34] + i[1019],
		lT = i[1037] + i[58] + i[1025] + i[29] + i[906],
		dT = i[42] + i[25] + i[1038] + i[29] + i[111] + i[58] + i[506],
		bT = i[473] + i[40] + i[884] + i[25] + i[899],
		vT = i[42] + i[29] + i[1039] + i[29] + i[111],
		yT = i[21] + i[1040] + i[83] + i[538] + i[29] + i[111],
		gT = i[42] + i[40] + i[1041] + i[58] + i[506],
		ET = i[1042],
		xT = i[880] + i[31] + i[832],
		mT = i[473] + i[25] + i[899],
		pT = i[428] + i[21] + i[187] + i[21] + i[1043],
		wT = i[428] + i[21] + i[187] + i[21] + i[1044] + i[21] + i[526],
		TT = i[428] + i[21] + i[187] + i[21] + i[1045] + i[21] + i[526],
		NT = i[428] + i[21] + i[187] + i[21] + i[999] + i[21] + i[141],
		AT = i[428] + i[21] + i[187] + i[21] + i[1044] + i[21] + i[528],
		OT = i[428] + i[21] + i[187] + i[21] + i[1045] + i[21] + i[528],
		IT = i[428] + i[21] + i[187] + i[21] + i[528] + i[21] + i[526],
		LT = i[428] + i[21] + i[187] + i[21] + i[999] + i[21] + i[142],
		MT = i[428] + i[21] + i[187] + i[21] + i[999] + i[21] + i[145],
		ST = i[428] + i[21] + i[187] + i[21] + i[1044],
		DT = i[1046],
		PT = i[428] + i[21] + i[187] + i[21] + i[526] + i[21] + i[528],
		CT = i[428] + i[21] + i[187] + i[21] + i[999] + i[21] + i[148],
		RT = i[1047] + i[21] + i[1048],
		FT = i[1049] + i[21] + i[1048],
		BT = i[428] + i[21] + i[1005] + i[21] + i[1050],
		kT = i[428] + i[21] + i[1005] + i[21] + i[437],
		GT = i[23] + i[918] + i[25] + i[886],
		WT = i[428] + i[21] + i[429] + i[21] + i[187] + i[21] + i[1044],
		$T = i[1051] + i[58] + i[1052],
		XT = i[42] + i[864] + i[494],
		HT = i[49] + i[29] + i[1053] + i[13] + i[1054],
		YT = i[42] + i[58] + i[885] + i[40] + i[1024],
		JT = i[22] + i[58] + i[885] + i[40] + i[1024],
		ZT = i[510] + i[29] + i[291],
		UT = i[1017] + i[58] + i[885] + i[40] + i[1024],
		jT = i[473] + i[127] + i[1055] + i[40] + i[638],
		zT = i[428] + i[21] + i[187] + i[21] + i[470],
		VT = i[428] + i[21] + i[187] + i[21] + i[1045],
		KT = i[388] + i[72],
		QT = i[170] + i[31] + i[922] + i[83] + i[161],
		qT = i[1009] + i[25] + i[1038],
		tN = i[21] + i[81] + i[1056],
		iN = i[482] + i[58] + i[506],
		nN = i[1011],
		eN = i[42] + i[31] + i[631],
		sN = i[830] + i[214],
		hN = i[830] + i[288],
		rN = i[1057],
		aN = i[62] + i[1058],
		oN = i[428] + i[21] + i[1002] + i[21] + i[1015] + i[21] + i[1003],
		fN = i[428] + i[21] + i[429] + i[21] + i[1059],
		cN = i[428] + i[21] + i[429] + i[21] + i[977] + i[21] + i[980],
		uN = i[62] + i[1060] + i[1061] + i[413],
		_N = i[62] + i[1062] + i[25] + i[358],
		lN = i[976],
		dN = i[1063] + i[21] + i[428] + i[21] + i[1064] + i[21] + i[1065],
		bN = i[1066],
		vN = i[1067] + i[164] + i[1068],
		yN = i[1069],
		gN = i[1070],
		EN = i[55] + i[25] + i[26],
		xN = i[179] + i[83] + i[1071],
		mN = i[242],
		pN = i[38] + i[241],
		wN = i[83] + i[240],
		TN = i[22] + i[31] + i[631] + i[38] + i[241],
		NN = i[22] + i[38] + i[241],
		AN = i[1072],
		ON = i[233] + i[29] + i[906],
		IN = i[246],
		LN = i[27] + i[98] + i[1073] + i[25] + i[26],
		MN = i[1074],
		SN = i[1017] + i[40] + i[1075] + i[58] + i[506],
		DN = i[1076],
		PN = i[1077],
		CN = i[1078],
		RN = i[1079],
		FN = i[1080],
		BN = i[1051] + i[40] + i[1081] + i[68] + i[1036],
		kN = i[170] + i[25] + i[222],
		GN = i[42] + i[52] + i[53] + i[31] + i[87],
		WN = i[1082] + i[58] + i[506],
		$N = i[55] + i[34] + i[76],
		XN = i[21] + i[81] + i[119] + i[1083] + i[58] + i[506],
		HN = i[4] + i[40] + i[1084],
		YN = i[616] + i[83] + i[81] + i[40] + i[1085],
		JN = i[339] + i[98] + i[347],
		ZN = i[339] + i[13] + i[346],
		UN = i[952] + i[31] + i[297],
		jN = i[21] + i[81] + i[1086],
		zN = i[339] + i[83] + i[81] + i[13] + i[1087],
		VN = i[289] + i[83] + i[81],
		KN = i[339] + i[34] + i[76],
		QN = i[339] + i[34] + i[139],
		qN = i[296] + i[31] + i[350],
		tA = i[21] + i[1088] + i[34] + i[76],
		iA = i[1089] + i[214],
		nA = i[1089] + i[288],
		eA = i[1090],
		sA = i[504] + i[243] + i[1091],
		hA = i[1092],
		rA = i[49] + i[164] + i[1093],
		aA = i[49] + i[31] + i[1094],
		oA = i[205] + i[40] + i[541],
		fA = i[49] + i[201] + i[1095],
		cA = i[21] + i[1076] + i[68] + i[883],
		uA = i[46] + i[1] + i[1096] + i[98] + i[1073],
		_A = i[21] + i[1097],
		lA = i[1098],
		dA = i[52] + i[1099] + i[45] + i[25] + i[1100] + i[477],
		bA = i[1101] + i[21] + i[1102],
		vA = i[31] + i[631],
		yA = i[40] + i[638],
		gA = i[31] + i[933],
		EA = i[1101] + i[21] + i[1103],
		xA = i[22] + i[25] + i[899],
		mA = i[25] + i[899],
		pA = i[919] + i[1104] + i[897],
		wA = i[1105] + i[29] + i[906],
		TA = i[27] + i[25] + i[222] + i[1] + i[1106],
		NA = i[334] + i[25] + i[1107],
		AA = i[27] + i[40] + i[1024] + i[25] + i[1107],
		OA = i[1108] + i[25] + i[196] + i[40] + i[1024],
		IA = i[40] + i[1024] + i[45] + i[1] + i[1109] + i[100] + i[139] + i[45] + i[25] + i[196],
		LA = i[623] + i[25] + i[222],
		MA = i[1105] + i[201] + i[241],
		SA = i[1110] + i[25] + i[899],
		DA = i[1111],
		PA = i[1112] + i[127] + i[1113],
		CA = i[1080] + i[29] + i[291],
		RA = i[1114],
		FA = i[497] + i[1] + i[1115],
		BA = i[21] + i[81] + i[119] + i[273] + i[201] + i[241],
		kA = i[160] + i[1] + i[198] + i[52] + i[199],
		GA = i[169] + i[98] + i[99] + i[1] + i[198] + i[52] + i[199],
		WA = i[21] + i[1082] + i[58] + i[506],
		$A = i[1116] + i[127] + i[1113],
		XA = i[508] + i[127] + i[1117],
		HA = i[894] + i[1] + i[835] + i[40] + i[638],
		YA = i[1118] + i[21] + i[1119],
		JA = i[947] + i[21] + i[950] + i[21] + i[469],
		ZA = i[21] + i[81] + i[119] + i[358],
		UA = i[947] + i[21] + i[187] + i[21] + i[395],
		jA = i[947] + i[21] + i[950] + i[21] + i[439],
		zA = i[947] + i[21] + i[187] + i[21] + i[1120],
		VA = i[1121] + i[1122],
		KA = i[519] + i[915] + i[322],
		QA = i[875] + i[21] + i[468] + i[21] + i[141],
		qA = i[875] + i[21] + i[468] + i[21] + i[142],
		tO = i[1123] + i[95],
		iO = i[1124] + i[45] + i[358] + i[72] + i[115] + i[842] + i[45] + i[1125] + i[218] + i[340],
		nO = i[675],
		eO = i[619] + i[218] + i[519] + i[839] + i[218] + i[38] + i[1126] + i[218] + i[58] + i[1127],
		sO = i[109] + i[65] + i[1128] + i[1129] + i[70],
		hO = i[62] + i[1130],
		rO = i[67] + i[52] + i[203] + i[1131],
		aO = i[21] + i[1132] + i[29] + i[1133],
		oO = i[619] + i[218] + i[519] + i[839] + i[218] + i[38] + i[1126],
		fO = i[64] + i[65] + i[358] + i[112] + i[358] + i[112] + i[358] + i[112] + i[358] + i[70],
		cO = i[21] + i[389],
		uO = i[389],
		_O = i[21] + i[131],
		lO = i[21] + i[118],
		dO = i[21] + i[81] + i[214] + i[1134],
		bO = i[1135],
		vO = i[21] + i[81] + i[214] + i[210],
		yO = i[72] + i[619] + i[218] + i[519] + i[839] + i[218] + i[38] + i[1126] + i[45] + i[479],
		gO =
			i[1124] +
			i[226] +
			i[410] +
			i[227] +
			i[634] +
			i[218] +
			i[560] +
			i[159] +
			i[64] +
			i[65] +
			i[358] +
			i[112] +
			i[358] +
			i[112] +
			i[358] +
			i[112] +
			i[358] +
			i[72] +
			i[413] +
			i[70],
		EO = i[72] + i[619] + i[218] + i[519] + i[839] + i[218] + i[38] + i[1126],
		xO = i[1124] + i[226] + i[358] + i[227],
		mO = i[1136],
		pO =
			i[226] +
			i[1124] +
			i[45] +
			i[411] +
			i[842] +
			i[45] +
			i[1137] +
			i[218] +
			i[457] +
			i[65] +
			i[358] +
			i[72] +
			i[415] +
			i[112] +
			i[358] +
			i[112] +
			i[358] +
			i[72] +
			i[415] +
			i[112] +
			i[410] +
			i[70],
		wO = i[72] + i[619] + i[218] + i[519] + i[839] + i[218] + i[38] + i[1126] + i[226] + i[1135],
		TO = i[1124] + i[226] + i[410] + i[227],
		NO = i[226] + i[1124] + i[45] + i[358] + i[72] + i[411] + i[842] + i[45] + i[562],
		AO = i[21] + i[479],
		OO = i[1138],
		IO = i[21] + i[81] + i[1139],
		LO = i[72] + i[619] + i[218] + i[519] + i[839] + i[218] + i[31] + i[261] + i[58] + i[1140],
		MO =
			i[1141] +
			i[159] +
			i[115] +
			i[95] +
			i[1142] +
			i[521] +
			i[159] +
			i[836] +
			i[227] +
			i[1143] +
			i[218] +
			i[1144] +
			i[159] +
			i[383] +
			i[218] +
			i[1143] +
			i[227] +
			i[1143] +
			i[218] +
			i[385] +
			i[1145] +
			i[465] +
			i[45] +
			i[358] +
			i[95] +
			i[45] +
			i[358] +
			i[95] +
			i[45] +
			i[410] +
			i[95] +
			i[1142] +
			i[634] +
			i[218] +
			i[560] +
			i[159] +
			i[64] +
			i[65] +
			i[1146] +
			i[66] +
			i[1146] +
			i[66] +
			i[1146] +
			i[66] +
			i[358] +
			i[72] +
			i[411] +
			i[1147] +
			i[383] +
			i[218] +
			i[153] +
			i[159] +
			i[412] +
			i[95] +
			i[227] +
			i[1141] +
			i[159] +
			i[410] +
			i[95] +
			i[227],
		SO =
			i[72] +
			i[619] +
			i[218] +
			i[519] +
			i[839] +
			i[218] +
			i[31] +
			i[261] +
			i[58] +
			i[1140] +
			i[72] +
			i[1135] +
			i[1148] +
			i[619] +
			i[218] +
			i[519] +
			i[839] +
			i[218] +
			i[31] +
			i[261] +
			i[58] +
			i[1140] +
			i[226] +
			i[1135],
		DO = i[1141] + i[218] + i[117] + i[159] + i[415] + i[95] + i[227],
		PO = i[1141] + i[218] + i[118] + i[159] + i[415] + i[95] + i[227],
		CO = i[72] + i[619] + i[218] + i[519] + i[839] + i[218] + i[31] + i[261] + i[29] + i[1133],
		RO =
			i[226] +
			i[1124] +
			i[45] +
			i[411] +
			i[842] +
			i[45] +
			i[1137] +
			i[218] +
			i[457] +
			i[65] +
			i[358] +
			i[72] +
			i[415] +
			i[112] +
			i[358] +
			i[112] +
			i[358] +
			i[72] +
			i[415] +
			i[112] +
			i[410] +
			i[1147],
		FO = i[21] + i[135] + i[52] + i[1149] + i[31] + i[365],
		BO = i[21] + i[133] + i[52] + i[1149] + i[31] + i[365],
		kO = i[619] + i[218] + i[519] + i[839] + i[218] + i[31] + i[261] + i[29] + i[1133],
		GO = i[21] + i[81] + i[119] + i[115],
		WO = i[58] + i[1150],
		$O = i[1151],
		XO = i[1080] + i[29] + i[1152],
		HO = i[109] + i[214],
		YO = i[109] + i[288],
		JO = i[42] + i[52] + i[53] + i[29] + i[1039] + i[29] + i[111],
		ZO = i[21] + i[81] + i[1153],
		UO = i[1154] + i[21] + i[1155],
		jO = i[389] + i[1] + i[447],
		zO = i[1125] + i[13] + i[346],
		VO = i[1156] + i[21] + i[1157],
		KO = i[209] + i[1158] + i[127] + i[893],
		QO = i[27] + i[34] + i[76] + i[25] + i[1038],
		qO = i[21] + i[67] + i[1159],
		tI = i[21] + i[149] + i[1159],
		iI = i[21] + i[149] + i[31] + i[297],
		nI = i[21] + i[67] + i[31] + i[297],
		eI = i[67] + i[98] + i[874],
		sI = i[1160],
		hI = i[499] + i[83] + i[490],
		rI = i[1161] + i[83] + i[161],
		aI = i[1156] + i[21] + i[187],
		oI = i[21] + i[149] + i[1162],
		fI = i[21] + i[67] + i[1162],
		cI = i[1163] + i[21] + i[1164] + i[21] + i[94] + i[21] + i[1165],
		uI = i[1163] + i[21] + i[1164] + i[21] + i[94] + i[21] + i[1166],
		_I = i[1167],
		lI = i[497],
		dI = i[42] + i[29] + i[1039] + i[29] + i[291],
		bI = i[497] + i[29] + i[111],
		vI = i[454] + i[378] + i[871],
		yI = i[890],
		gI = i[170] + i[52] + i[203] + i[29] + i[30] + i[1] + i[198] + i[40] + i[177],
		EI = i[179] + i[29] + i[30] + i[1] + i[198] + i[52] + i[199],
		xI = i[27] + i[52] + i[203] + i[29] + i[30] + i[1] + i[198],
		mI = i[46] + i[52] + i[203] + i[29] + i[30] + i[1] + i[198] + i[40] + i[177],
		pI = i[46] + i[52] + i[1168],
		wI = i[21] + i[347] + i[29] + i[1169] + i[98] + i[104],
		TI = i[1170] + i[40] + i[41],
		NI = i[926] + i[52] + i[1171],
		AI = i[1172],
		OI = i[52] + i[1168] + i[98] + i[1073],
		II = i[1173],
		LI = i[473] + i[29] + i[111],
		MI = i[49] + i[1] + i[1174] + i[29] + i[553],
		SI = i[42] + i[52] + i[53] + i[52] + i[1171] + i[31] + i[933],
		DI = i[833] + i[29] + i[111],
		PI = i[52] + i[1171] + i[29] + i[553] + i[98] + i[1073],
		CI = i[334],
		RI = i[21] + i[81] + i[119] + i[411],
		FI = i[1051] + i[40] + i[1081] + i[83] + i[81],
		BI = i[21] + i[81] + i[119] + i[273] + i[29] + i[1039],
		kI = i[1175] + i[29] + i[111],
		GI = i[67] + i[40] + i[866] + i[29] + i[111],
		WI = i[334] + i[29] + i[1039],
		$I = i[532] + i[21] + i[1176] + i[21] + i[533],
		XI = i[22] + i[25] + i[899] + i[58] + i[97] + i[98] + i[1073],
		HI = i[1177],
		YI = i[1178],
		JI = i[21] + i[81] + i[1179],
		ZI = i[1180],
		UI = i[21] + i[81] + i[119] + i[412],
		jI = i[432] + i[21] + i[1065],
		zI = i[170] + i[52] + i[1168],
		VI = i[428] + i[21] + i[417] + i[21] + i[972],
		KI = i[417] + i[21] + i[424],
		QI = i[62] + i[410] + i[52] + i[1181],
		qI = i[62] + i[25] + i[1182],
		tL = i[473] + i[127] + i[128],
		iL = i[1183],
		nL = i[532] + i[21] + i[1184] + i[21] + i[533],
		eL = i[22] + i[31] + i[631] + i[58] + i[97] + i[98] + i[1073],
		sL = i[1] + i[1185] + i[31] + i[631] + i[98] + i[1073],
		hL = i[1] + i[1185] + i[40] + i[638] + i[98] + i[1073],
		rL = i[25] + i[899] + i[322],
		aL = i[977] + i[21] + i[1186] + i[21] + i[1187] + i[21] + i[1188] + i[21] + i[1189] + i[21] + i[1190],
		oL = i[1191],
		fL = i[619] + i[218] + i[40] + i[1024] + i[25] + i[1192],
		cL = i[1193] + i[1194] + i[1195] + i[25] + i[45] + i[410] + i[95],
		uL = i[413] + i[95],
		_L = i[1143] + i[31] + i[547],
		lL = i[1196],
		dL = i[27] + i[164] + i[165] + i[1] + i[198],
		bL = i[57] + i[25] + i[1107],
		vL = i[1197],
		yL = i[1198] + i[329] + i[330],
		gL = i[200] + i[25] + i[1038],
		EL = i[200],
		xL = i[22] + i[127] + i[1199],
		mL = i[1200],
		pL = i[1201],
		wL = i[55] + i[25] + i[1107],
		TL = i[1089] + i[83] + i[81],
		NL = i[27] + i[31] + i[89] + i[1] + i[198],
		AL = i[454] + i[211] + i[234],
		OL = i[55] + i[25] + i[1107] + i[211] + i[1202] + i[1] + i[293] + i[13] + i[347] + i[211] + i[823],
		IL = i[49] + i[25] + i[1203],
		LL = i[40] + i[1024] + i[25] + i[1192],
		ML = i[979] + i[25] + i[1192],
		SL = i[49] + i[25] + i[1204],
		DL = i[334] + i[40] + i[1024] + i[25] + i[1107],
		PL = i[0] + i[25] + i[899] + i[58] + i[885],
		CL = i[852] + i[25] + i[1205],
		RL = i[1206] + i[31] + i[895] + i[38] + i[896],
		FL = i[1207] + i[31] + i[297],
		BL = i[344] + i[83] + i[81] + i[1] + i[1208],
		kL = i[25] + i[1107] + i[98] + i[1073],
		GL = i[1209] + i[98] + i[476],
		WL = i[416],
		$L = i[826],
		XL = i[1210],
		HL = i[1209] + i[45] + i[504] + i[477],
		YL = i[45] + i[124] + i[45],
		JL = i[301] + i[25] + i[1100],
		ZL = i[833] + i[52] + i[1211] + i[25] + i[222],
		UL = i[49] + i[31] + i[1212],
		jL = i[24] + i[98] + i[1073] + i[25] + i[26],
		zL = i[1101] + i[21] + i[1213],
		VL = i[344] + i[25] + i[1100],
		KL = i[106] + i[25] + i[107] + i[127] + i[869] + i[164] + i[1093] + i[322],
		QL = i[924] + i[211] + i[1214],
		qL = i[1101] + i[21] + i[1184] + i[21] + i[1215],
		tM = i[1216],
		iM = i[894] + i[98] + i[1217],
		nM = i[1218] + i[21] + i[1215],
		eM = i[21] + i[1219],
		sM = i[21] + i[1220] + i[29] + i[1221],
		hM = i[21] + i[81] + i[119] + i[1109] + i[25] + i[1107],
		rM = i[49] + i[25] + i[1038] + i[29] + i[111] + i[25] + i[1204],
		aM = i[49] + i[25] + i[1038] + i[29] + i[111],
		oM = i[49] + i[68] + i[1036],
		fM = i[49] + i[1] + i[1222] + i[29] + i[111],
		cM = i[307] + i[31] + i[89],
		uM = i[473] + i[40] + i[638],
		_M = i[62] + i[1223],
		lM = i[205] + i[1] + i[273] + i[25] + i[222],
		dM = i[29] + i[553] + i[31] + i[922],
		bM = i[46] + i[29] + i[553] + i[31] + i[922] + i[58] + i[97] + i[98] + i[99],
		vM = i[1022] + i[21] + i[182],
		yM = i[1001],
		gM = i[49] + i[29] + i[111] + i[34] + i[1224],
		EM = i[1022] + i[21] + i[181],
		xM = i[49] + i[127] + i[1225],
		mM = i[163] + i[29] + i[291],
		pM = i[298] + i[31] + i[922],
		wM = i[362] + i[31] + i[922],
		TM = i[163] + i[38] + i[240] + i[29] + i[291],
		NM = i[1226],
		AM = i[920],
		OM = i[432] + i[21] + i[1227] + i[21] + i[991],
		IM = i[432] + i[21] + i[1227] + i[21] + i[991] + i[21] + i[435],
		LM = i[432] + i[21] + i[1227] + i[21] + i[993] + i[21] + i[435],
		MM = i[1227] + i[21] + i[432] + i[21] + i[543] + i[21] + i[1228],
		SM = i[1229],
		DM = i[1227] + i[21] + i[432] + i[21] + i[543] + i[21] + i[1230],
		PM = i[1231],
		CM = i[1227] + i[21] + i[432] + i[21] + i[543],
		RM = i[21] + i[1232],
		FM = i[1233] + i[21] + i[1234],
		BM = i[21] + i[195] + i[412] + i[83] + i[312],
		kM = i[340] + i[127] + i[1235],
		GM = i[1233] + i[21] + i[1236],
		WM = i[21] + i[771] + i[98] + i[104],
		$M = i[894] + i[127] + i[1235] + i[31] + i[368] + i[58] + i[97] + i[127] + i[1237] + i[58] + i[1127],
		XM = i[1238],
		HM = i[1239],
		YM = i[21] + i[81] + i[1240],
		JM = i[21] + i[1241],
		ZM = i[1242] + i[218] + i[1066],
		UM = i[1243] + i[218] + i[1066],
		jM = i[1244] + i[218] + i[1066],
		zM = i[1245] + i[218] + i[1066],
		VM =
			i[1246] +
			i[65] +
			i[179] +
			i[226] +
			i[504] +
			i[243] +
			i[1247] +
			i[227] +
			i[1248] +
			i[1249] +
			i[66] +
			i[1250] +
			i[1251] +
			i[1252] +
			i[358] +
			i[1253] +
			i[1254] +
			i[1255] +
			i[195] +
			i[1256] +
			i[1257] +
			i[1258] +
			i[14] +
			i[415] +
			i[243] +
			i[572] +
			i[195] +
			i[1259] +
			i[140] +
			i[115] +
			i[119] +
			i[358] +
			i[104] +
			i[115] +
			i[68] +
			i[97] +
			i[1260] +
			i[572] +
			i[1250] +
			i[1261] +
			i[140] +
			i[1179] +
			i[347] +
			i[1262] +
			i[137] +
			i[1263] +
			i[413] +
			i[1264] +
			i[1265] +
			i[587] +
			i[38] +
			i[1266] +
			i[243] +
			i[29] +
			i[1267] +
			i[29] +
			i[1252] +
			i[201] +
			i[1268] +
			i[1269] +
			i[14] +
			i[1270] +
			i[97] +
			i[1271] +
			i[347] +
			i[243] +
			i[644] +
			i[1272] +
			i[1273] +
			i[1274] +
			i[587] +
			i[34] +
			i[1275] +
			i[519] +
			i[1257] +
			i[214] +
			i[412] +
			i[1276] +
			i[531] +
			i[1277] +
			i[144] +
			i[1278] +
			i[1252] +
			i[410] +
			i[1] +
			i[529] +
			i[1279] +
			i[137] +
			i[34] +
			i[410] +
			i[97] +
			i[34] +
			i[412] +
			i[1280] +
			i[329] +
			i[195] +
			i[288] +
			i[1252] +
			i[58] +
			i[1281] +
			i[1282] +
			i[1283] +
			i[1284] +
			i[1285] +
			i[1286] +
			i[1257] +
			i[1287] +
			i[1257] +
			i[1288] +
			i[415] +
			i[195] +
			i[243] +
			i[412] +
			i[1289] +
			i[1290] +
			i[1291] +
			i[1292] +
			i[413] +
			i[1293] +
			i[1294] +
			i[415] +
			i[45] +
			i[415] +
			i[66] +
			i[343],
		KM = i[21] + i[109] + i[29] + i[111],
		QM = i[64] + i[65] + i[358] + i[112] + i[1295] + i[112] + i[358] + i[112] + i[410] + i[70],
		qM = i[62] + i[1296] + i[358],
		tS = i[21] + i[109] + i[378] + i[1297] + i[40] + i[1298],
		iS = i[49] + i[31] + i[1299],
		nS = i[21] + i[81] + i[119] + i[210],
		eS = i[978] + i[21] + i[1234],
		sS = i[556] + i[58] + i[506],
		hS = i[1300],
		rS = i[1301],
		aS = i[1302] + i[21] + i[1215],
		oS = i[852] + i[31] + i[1303],
		fS = i[1233],
		cS = i[205] + i[31] + i[368],
		uS = i[1304] + i[83] + i[81] + i[83] + i[1012],
		_S = i[1201] + i[34] + i[513],
		lS = i[1305] + i[31] + i[1303] + i[34] + i[513],
		dS = i[1306] + i[21] + i[1307],
		bS = i[1306] + i[21] + i[252],
		vS = i[1308] + i[21] + i[1309],
		yS = i[619] + i[218] + i[83] + i[1310],
		gS = i[1311] + i[21] + i[973] + i[21] + i[214],
		ES = i[1311] + i[21] + i[973] + i[21] + i[288],
		xS = i[62] + i[1312],
		mS = i[410] + i[95] + i[45] + i[1193] + i[1194] + i[52] + i[572] + i[52] + i[572] + i[52] + i[572],
		pS = i[115] + i[95] + i[45] + i[412] + i[95],
		wS = i[1313],
		TS = i[960],
		NS = i[42] + i[98] + i[1314],
		AS = i[1315] + i[1316] + i[1317],
		OS = i[42] + i[83] + i[1310] + i[25] + i[222],
		IS = i[242] + i[1] + i[1318],
		LS = i[1319] + i[819],
		MS = i[21] + i[1320],
		SS = i[21] + i[81] + i[1321],
		DS = i[1067],
		PS = i[822],
		CS = i[334] + i[83] + i[312],
		RS = i[55] + i[83] + i[312],
		FS = i[205] + i[83] + i[1310],
		BS = i[894] + i[83] + i[1310],
		kS = i[913] + i[52] + i[1322],
		GS = i[913] + i[52] + i[1323],
		WS = i[21] + i[49] + i[68] + i[77] + i[83] + i[312],
		$S = i[1158] + i[34] + i[1324],
		XS = i[894] + i[211] + i[1325] + i[119] + i[1326],
		HS = i[1327],
		YS = i[339] + i[58] + i[97] + i[201] + i[260] + i[25] + i[26],
		JS = i[1105],
		ZS = i[833] + i[201] + i[241],
		US = i[1101] + i[21] + i[1184] + i[21] + i[1234],
		jS = i[890] + i[72] + i[344] + i[72] + i[334],
		zS = i[890] + i[72] + i[1328],
		VS = i[890] + i[72] + i[344] + i[72] + i[1232],
		KS = i[890] + i[72] + i[1329],
		QS = i[890] + i[72] + i[1330],
		qS = i[1022] + i[21] + i[1184] + i[21] + i[1234],
		tD = i[1001] + i[72] + i[344] + i[72] + i[334],
		iD = i[1022] + i[21] + i[1213],
		nD = i[1001] + i[72] + i[1328],
		eD = i[1001] + i[72] + i[344] + i[72] + i[1232],
		sD = i[1001] + i[72] + i[170],
		hD = i[1001] + i[72] + i[46],
		rD = i[1302] + i[21] + i[1234],
		aD = i[1066] + i[72] + i[334],
		oD = i[1331],
		fD = i[1066] + i[72] + i[1232],
		cD = i[109] + i[72] + i[334],
		uD = i[1332],
		_D = i[109] + i[72] + i[1232],
		lD = i[1218] + i[21] + i[1234],
		dD = i[1088] + i[72] + i[334],
		bD = i[1088] + i[72] + i[1232],
		vD = i[951] + i[72] + i[898],
		yD = i[919] + i[72] + i[918],
		gD = i[1201] + i[72] + i[334],
		ED = i[1201] + i[72] + i[1333],
		xD = i[1233] + i[21] + i[1215],
		mD = i[1201] + i[72] + i[1232],
		pD = i[1334] + i[72] + i[265],
		wD = i[21] + i[1105] + i[31] + i[365],
		TD = i[833] + i[98] + i[1073] + i[201] + i[241],
		ND = i[42] + i[98] + i[1073] + i[98] + i[1335],
		AD = i[1163] + i[21] + i[543] + i[21] + i[1336],
		OD = i[1337],
		ID = i[1163] + i[21] + i[543] + i[21] + i[432],
		LD = i[1163] + i[21] + i[543] + i[21] + i[1338],
		MD = i[1339],
		SD = i[1163] + i[21] + i[543] + i[21] + i[1340],
		DD = i[1341],
		PD = i[1163] + i[21] + i[543] + i[21] + i[1342] + i[21] + i[1343] + i[21] + i[428],
		CD = i[22] + i[72] + i[1344] + i[72] + i[919],
		RD = i[1163] + i[21] + i[543] + i[21] + i[1342] + i[21] + i[428],
		FD = i[22] + i[72] + i[919],
		BD = i[1163] + i[21] + i[543] + i[21] + i[1342] + i[21] + i[938],
		kD = i[22] + i[72] + i[968],
		GD = i[1163] + i[21] + i[543] + i[21] + i[1342] + i[21] + i[417],
		WD = i[22] + i[72] + i[456],
		$D = i[512] + i[98] + i[1345],
		XD = i[1163] + i[21] + i[543] + i[21] + i[470],
		HD = i[29] + i[1109] + i[98] + i[1073],
		YD = i[31] + i[368] + i[98] + i[1073],
		JD = i[201] + i[1346] + i[98] + i[1073],
		ZD = i[211] + i[1325] + i[119] + i[1326] + i[98] + i[1073],
		UD = i[52] + i[1347] + i[1] + i[293] + i[98] + i[1073],
		jD = i[83] + i[1310] + i[98] + i[1073],
		zD = i[127] + i[1235] + i[31] + i[368] + i[98] + i[1073],
		VD = i[127] + i[1235] + i[31] + i[368] + i[98] + i[1073] + i[58] + i[97] + i[127] + i[1237] + i[58] + i[1127],
		KD = i[29] + i[291] + i[98] + i[1073],
		QD = i[40] + i[1348],
		qD = i[361],
		tP = i[1349],
		iP = i[151] + i[34] + i[1350],
		nP = i[982] + i[21] + i[148],
		eP = i[982] + i[21] + i[141],
		sP = i[982] + i[21] + i[146],
		hP = i[982] + i[21] + i[145],
		rP = i[982] + i[21] + i[142],
		aP = i[982] + i[21] + i[148] + i[21] + i[145],
		oP = i[982] + i[21] + i[141] + i[21] + i[142],
		fP = i[982] + i[21] + i[145] + i[21] + i[141],
		cP = i[982] + i[21] + i[145] + i[21] + i[148],
		uP = i[982] + i[21] + i[142] + i[21] + i[148],
		_P = i[1351],
		lP = i[1352] + i[72] + i[1353],
		dP = i[1014] + i[21] + i[187] + i[21] + i[1354],
		bP = i[1014] + i[21] + i[187] + i[21] + i[1354] + i[21] + i[526],
		vP = i[1351] + i[72] + i[195],
		yP = i[1014] + i[21] + i[187] + i[21] + i[1354] + i[21] + i[528],
		gP = i[1351] + i[72] + i[1122],
		EP = i[49] + i[378] + i[1355] + i[52] + i[637],
		xP = i[497] + i[31] + i[89],
		mP = i[49] + i[40] + i[1356],
		pP = i[42] + i[38] + i[241] + i[31] + i[89],
		wP = i[166] + i[1] + i[2] + i[52] + i[637],
		TP = i[21] + i[81] + i[1357],
		NP = i[21] + i[81] + i[214] + i[415],
		AP = i[42] + i[1358] + i[549],
		OP = i[42] + i[1359] + i[549],
		IP = i[195] + i[519] + i[549],
		LP = i[1122] + i[519] + i[549],
		MP = i[621] + i[83] + i[161],
		SP = i[1360],
		DP = i[1361],
		PP = i[926] + i[40] + i[937],
		CP = i[166] + i[58] + i[506],
		RP = i[21] + i[81] + i[211] + i[622] + i[40] + i[541],
		FP = i[833] + i[201] + i[1362] + i[38] + i[925],
		BP = i[21] + i[587] + i[52],
		kP = i[21] + i[1257] + i[25],
		GP = i[928] + i[1363],
		WP = i[928] + i[1364],
		$P = i[21] + i[1365] + i[29] + i[191] + i[1] + i[2] + i[52] + i[637],
		XP = i[361] + i[288],
		HP = i[21] + i[81] + i[1366],
		YP = i[361] + i[214],
		JP = i[21] + i[81] + i[1367],
		ZP = i[1368] + i[68] + i[347],
		UP = i[621] + i[127] + i[869],
		jP = i[21] + i[81] + i[1369],
		zP = i[247] + i[38] + i[241] + i[98] + i[1370],
		VP = i[247] + i[25] + i[899] + i[98] + i[1370],
		KP = i[952] + i[25] + i[1371] + i[68] + i[284],
		QP = i[623] + i[40] + i[937] + i[52] + i[108],
		qP = i[1372],
		tC = i[1207] + i[40] + i[937] + i[52] + i[108],
		iC = i[42] + i[201] + i[1373] + i[98] + i[1374],
		nC = i[621] + i[52] + i[108],
		eC = i[361] + i[1] + i[1375],
		sC = i[919] + i[1] + i[1375],
		hC = i[1376],
		rC = i[1377],
		aC = i[49] + i[127] + i[1378],
		oC = i[21] + i[137] + i[329] + i[138],
		fC = i[55],
		cC = i[58] + i[1379] + i[40] + i[1348],
		uC = i[1380],
		_C = i[1381],
		lC = i[1382],
		dC = i[1383] + i[21] + i[1384] + i[21] + i[1385],
		bC = i[437] + i[21] + i[543] + i[21] + i[1386],
		vC = i[509],
		yC = i[437] + i[21] + i[543] + i[21] + i[1387],
		gC = i[1388],
		EC = i[42] + i[127] + i[630],
		xC = i[153] + i[201] + i[241],
		mC = i[361] + i[410],
		pC = i[361] + i[115],
		wC = i[428] + i[21] + i[429] + i[21] + i[949],
		TC = i[21] + i[919] + i[58] + i[885] + i[98] + i[629] + i[68] + i[207],
		NC = i[21] + i[81] + i[1389],
		AC = i[21] + i[104] + i[868] + i[1390] + i[68] + i[207],
		OC = i[136] + i[58] + i[1025] + i[25] + i[208],
		IC = i[21] + i[278] + i[410] + i[98] + i[347] + i[58] + i[885],
		LC = i[1391],
		MC = i[1391] + i[214],
		SC = i[1391] + i[288],
		DC = i[49] + i[98] + i[1392],
		PC = i[1393],
		CC = i[1207],
		RC = i[1394] + i[98] + i[1395],
		FC = i[1396],
		BC = i[950] + i[21] + i[130],
		kC = i[1397],
		GC = i[1398],
		WC = i[621] + i[201] + i[1399],
		$C = i[621] + i[25] + i[1400],
		XC = i[1401],
		HC = i[21] + i[1402] + i[68] + i[1403],
		YC = i[1037],
		JC = i[1377] + i[34] + i[50],
		ZC = i[1404],
		UC = i[952] + i[25] + i[1371],
		jC = i[833] + i[25] + i[1371],
		zC = i[31] + i[1405] + i[40] + i[1348],
		VC = i[1406],
		KC = i[1125] + i[13] + i[346] + i[31] + i[1407],
		QC = i[163] + i[40] + i[1408],
		qC = i[21] + i[81] + i[211] + i[1350],
		tR = i[21] + i[1409],
		iR = i[106] + i[25] + i[107] + i[98] + i[347] + i[25] + i[899],
		nR = i[106] + i[25] + i[107] + i[13] + i[346] + i[25] + i[899],
		eR = i[204] + i[45] + i[74],
		sR = i[106] + i[25] + i[107] + i[58] + i[97] + i[83] + i[1410] + i[52] + i[901] + i[68] + i[902] + i[31] + i[1411],
		hR = i[21] + i[1412],
		rR = i[450] + i[38] + i[241],
		aR = i[21] + i[149],
		oR = i[67] + i[1] + i[472],
		fR = i[1413],
		cR = i[49] + i[211] + i[1414],
		uR = i[49] + i[31] + i[1415],
		_R = i[49] + i[1] + i[1416],
		lR = i[49] + i[201] + i[1417],
		dR = i[52] + i[53] + i[31] + i[933],
		bR = i[519] + i[1418],
		vR = i[58] + i[221] + i[322],
		yR = i[25] + i[222] + i[322],
		gR = i[38] + i[241] + i[322],
		ER = i[40] + i[1024] + i[322],
		xR = i[31] + i[1419],
		mR = i[29] + i[553],
		pR = i[25] + i[222],
		wR = i[519] + i[839] + i[201] + i[202],
		TR = i[25] + i[899] + i[58] + i[885],
		NR = i[115] + i[72] + i[358],
		AR = i[115] + i[72] + i[414] + i[72] + i[414] + i[72] + i[415] + i[218] + i[958] + i[115],
		OR =
			i[619] +
			i[818] +
			i[477] +
			i[52] +
			i[1420] +
			i[45] +
			i[1] +
			i[1421] +
			i[45] +
			i[106] +
			i[45] +
			i[819] +
			i[413] +
			i[243] +
			i[1] +
			i[447],
		IR = i[1422] + i[243] + i[210] + i[243] + i[1423];
	function LR(t, i, n) {
		if (t[p]()) {
			var e = t._hJ || t.getChildren();
			if (e) {
				for (var s = 0, h = (e = e._l5 || e)[F]; s < h; s++) if (!1 === i[m](n, e[s]) || !1 === LR(e[s], i, n)) return !1;
				return !0;
			}
		}
	}
	function MR(t) {
		if (!t.hasChildren()) return t instanceof QW ? t : null;
		for (var i, n = t._hJ._l5, e = n[F] - 1; 0 <= e; ) {
			if ((i = MR((i = n[e])))) return i;
			e--;
		}
		return null;
	}
	function SR(t, i, n, e) {
		return e
			? (function t(i, n, e) {
					for (var s, h = 0, r = (i = i._l5 || i)[F]; h < r; h++)
						if (((s = i[h]).hasChildren() && !t(s[y], n, e)) || !1 === n[m](e, s)) return !1;
					return !0;
			  })(t, i, n)
			: (function t(i, n, e) {
					for (var s, h = 0, r = (i = i._l5 || i)[F]; h < r; h++)
						if (((s = i[h]), !1 === n[m](e, s) || (s.hasChildren() && !t(s.children, n, e)))) return !1;
					return !0;
			  })(t, i, n);
	}
	function DR(t, i, n, e) {
		return e
			? (function t(i, n, e) {
					for (var s, h = (i = i._l5 || i)[F] - 1; 0 <= h; h--)
						if (((s = i[h])[p]() && !t(s[y], n, e)) || !1 === n.call(e, s)) return !1;
					return !0;
			  })(t, i, n)
			: (function t(i, n, e) {
					for (var s, h = (i = i._l5 || i).length - 1; 0 <= h; h--)
						if (((s = i[h]), !1 === n[m](e, s) || (s[p]() && !t(s[y], n, e)))) return !1;
					return !0;
			  })(t, i, n);
	}
	function PR(t, i, n) {
		for (var e, s = (t._l5 || t).slice(0); s.length; ) {
			if (((e = s[0]), (s = s[w](1)), !1 === i.call(n, e))) return !1;
			if (e.hasChildren()) {
				var h = e[y];
				(h = h._l5 || h), (s = s[B](h));
			}
		}
		return !0;
	}
	function CR(t, f) {
		function e(t, i) {
			for (var n = t[F], e = i.length, s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s; )
				r === n ? (h[o++] = i[a++]) : a === e || f(t[r], i[a]) <= 0 ? (h[o++] = t[r++]) : (h[o++] = i[a++]);
			return h;
		}
		function s(t) {
			var i = t.length,
				n = Math[T](i / 2);
			return i <= 1 ? t : e(s(t.slice(0, n)), s(t[S](n)));
		}
		return s(t);
	}
	function RR(t, i, n, e) {
		t instanceof PF && (t = t._l5);
		for (var s = 0, h = (t._l5 || t).length; s < h; s++) if (!1 === i[m](n, t[s], s, e)) return !1;
		return !0;
	}
	function FR(t, i, n) {
		for (var e = t instanceof PF, s = t._l5 || t, h = 0, r = s[F]; h < r; h++) {
			var a = s[h];
			i[m](n, a) && (e ? t.remove(a) : t.splice(h, 1), h--, r--);
		}
	}
	function BR(t, i, n, e) {
		t instanceof PF && (t = t._l5);
		for (var s = (t._l5 || t)[F] - 1; 0 <= s; s--) if (!1 === i[m](n, t[s], s, e)) return !1;
		return !0;
	}
	function kR(t) {
		if (t[e] instanceof Function) return t[e](!0);
		var i,
			n = [];
		return (
			RR(
				t,
				function(t) {
					(i = t && t[e] instanceof Function ? t.clone() : t), n[L](i);
				},
				this
			),
			n
		);
	}
	function GR(t, i, n) {
		n === M || n < 0 ? t[L](i) : t.splice(n, 0, i);
	}
	function WR(t, i) {
		var n = t[v](i);
		return !(n < 0 || n >= t[F]) && t[w](n, 1);
	}
	function $R(t, i) {
		var n = t;
		for (var e in i)
			if (i.__lookupGetter__) {
				var s = i.__lookupGetter__(e),
					h = i.__lookupSetter__(e);
				s || h ? (s && n.__defineGetter__(e, s), h && n.__defineSetter__(e, h)) : (n[e] = i[e]);
			} else n[e] = i[e];
		return n;
	}
	function XR(t, i, n) {
		if (!(t instanceof Function)) throw new Error("subclass must be type of Function");
		var e = null;
		function s() {}
		r == typeof i &&
			((e = i),
			(i = t),
			(t = function() {
				i[b](this, arguments);
			}));
		var h = t[N];
		return (
			(s.prototype = i.prototype),
			(t.prototype = new s()),
			(t[a] = i.prototype),
			(t.superclass.constructor = i),
			$R(t[N], h),
			e && $R(t[N], e),
			n && $R(t[N], n),
			(t.prototype[o] = t)
		);
	}
	function HR(t, i, n) {
		return YR(t, i, "constructor", n);
	}
	function YR(t, i, n, e) {
		var s = i[a];
		if (s) {
			var h = s[n];
			return h ? h[b](t, e) : void 0;
		}
	}
	function JR(t, i, n, e) {
		if ("constructor" == n) return ZR(t, i, e);
		if (i[f] instanceof Function) {
			var s = i.super_[N][n];
			return s instanceof Function ? s[b](t, e) : void 0;
		}
	}
	function ZR(t, i, n) {
		if (i[f] instanceof Function) return i.super_[b](t, n);
	}
	function UR(t, i, n) {
		var e, s;
		if (!(t instanceof Function) && t instanceof Object)
			return (
				(i = t[c]),
				t.hasOwnProperty("constructor")
					? ((e = t.constructor), delete t.constructor)
					: (e = i
							? function() {
									i.apply(this, arguments);
							  }
							: function() {}),
				UR(e, i, t)
			);
		if (i && !(i instanceof Function) && i instanceof Object) return UR(t, i[c], i);
		if (
			(i &&
				((s = i),
				(t[f] = s),
				(t[N] = Object[_](s.prototype, { super_: { value: s, enumerable: !1 }, constructor: { value: t, enumerable: !1 } }))),
			n)
		) {
			var h = t[N];
			for (var r in n) h[r] = n[r];
		}
		return t;
	}
	function jR(t, e, i, n, s) {
		if (n) Object.defineProperty(t, e, { value: i, enumerable: !0 });
		else {
			var h = { configurable: !0, enumerable: !0 },
				r = l + e;
			i !== M && (t[r] = i),
				(h.get = function() {
					return this[r];
				}),
				(h.set = function(t) {
					var i = this[r];
					if (i == t) return !1;
					var n = new eB(this, e, t, i);
					return !!this[d](n) && ((this[r] = t), s && s[m](this, t, i), this[g](n), !0);
				}),
				Object[E](t, e, h);
		}
	}
	function zR(t, i) {
		for (var n = 0, e = i[F]; n < e; n++) {
			var s = i[n];
			jR(t, s.name || s, s.defaultValue || s.value, s.readOnly, s[h]);
		}
	}
	var VR = 0;
	if (u.navigator) {
		var KR = navigator[n],
			QR = /opera/i[A](KR),
			qR = !QR && /msie/i[A](KR),
			tF = /rv:11.0/i[A](KR),
			iF = /MSIE 10./i[A](KR);
		if ((/Edge/i[A](KR), tF && (qR = !0), /msie\s[6,7,8]/i[A](KR))) throw new Error("your browser is not supported");
		var nF = /webkit|khtml/i[A](KR),
			eF = !nF && /gecko/i[A](KR),
			sF = /firefox\//i.test(KR),
			hF = /Chrome\//i[A](KR),
			rF = !hF && /Safari\//i.test(KR),
			aF = /Macintosh;/i[A](KR),
			oF = /(iPad|iPhone|iPod)/g[A](KR),
			fF = /Android/g[A](KR),
			cF = /Windows Phone/g[A](KR),
			uF = (oF || fF || cF) && O in u,
			_F = KR.match(/AppleWebKit\/([0-9\.]*)/);
		if (_F && 1 < _F[F]) parseFloat(_F[1]);
		fF && parseFloat(KR.match(/Android\s([0-9\.]*)/)[1]);
	}
	function lF(t, i) {
		return (t[I] = i), t;
	}
	function dF(t, i) {
		if (!t.hasOwnProperty(D)) {
			var n = t[P](o);
			if (!n) return lF(t, i);
			for (var e = n[C](R), s = 0, h = e.length; s < h; s++) if (e[s] == i) return;
			return lF(t, (n += R + i));
		}
		t[D].add(i);
	}
	function bF(t, i) {
		if (!t.hasOwnProperty(D)) {
			var n = t[P](o);
			if (!n || !n.indexOf(i)) return;
			for (var e = "", s = n[C](R), h = 0, r = s.length; h < r; h++) s[h] != i && (e += s[h] + R);
			return lF(t, e);
		}
		t[D][k](i);
	}
	function vF(t) {
		return (!isNaN(t) && t instanceof Number) || G == typeof t;
	}
	function yF(t) {
		return t !== M && (t instanceof String || s == typeof t);
	}
	function gF(t) {
		return Array[W](t);
	}
	function EF(t) {
		(t = t || u.event)[$] ? t.preventDefault() : (t.returnValue = !1);
	}
	function xF(t) {
		(t = t || u[X])[H] ? t.stopPropagation() : t[Y] || (t[Y] = !0);
	}
	function mF(t) {
		EF(t), xF(t);
	}
	function pF(t) {
		return Math[J](Math[Z]() * t);
	}
	function wF(t) {
		return 0 < t ? Math.floor(t) : Math[T](t);
	}
	function TF(t) {
		return 0 < t ? Math[T](t) : Math[J](t);
	}
	function NF(t) {
		return t < 16777216
			? U + (j + t.toString(16))[S](-6)
			: z + ((t >> 16) & 255) + V + ((t >> 8) & 255) + V + (255 & t) + V + (((t >> 24) & 255) / 255)[K](2) + Q;
	}
	function AF(t, i, n) {
		r != typeof n || n.hasOwnProperty(q) || (n[q] = !0), Object[E](t, i, n);
	}
	function OF(t, i) {
		for (var n in i)
			if (tt != n[0]) {
				var e = i[n];
				r != typeof e || e.hasOwnProperty(q) || (e[q] = !0);
			}
		Object.defineProperties(t, i);
	}
	function IF(t, i) {
		i = i || u;
		for (var n = t[C](it), e = 0, s = n[F]; e < s; e++) i = i[n[e]];
		return i;
	}
	function LF(t) {
		return t instanceof MouseEvent || (t instanceof Object && t.touches !== M);
	}
	function MF(t) {
		u[nt] && console.log.apply(console, arguments);
	}
	function SF(t) {
		u[nt] && console[et](t);
	}
	u[st] ||
		(u[st] =
			u.webkitRequestAnimationFrame ||
			u.mozRequestAnimationFrame ||
			u.oRequestAnimationFrame ||
			u.msRequestAnimationFrame ||
			function(t, i) {
				return u.setTimeout(function() {
					t();
				}, 1e3 / 60);
			}),
		u[ht] ||
			(u.cancelAnimationFrame =
				u[rt] ||
				u[at] ||
				u[ot] ||
				u.msCancelAnimationFrame ||
				function(t) {
					return u[ft](t);
				});
	var DF = { SELECTION_TOLERANCE: uF ? 7 : 4, LABEL_COLOR: ct };
	OF(DF, {
		FONT_STYLE: {
			get: function() {
				return this[ut] || (this[ut] = _t);
			},
			set: function(t) {
				this[ut] != t && ((this[ut] = t), (this._fontChanged = !0));
			},
		},
		FONT_SIZE: {
			get: function() {
				return this._fontSize || (this[lt] = 12);
			},
			set: function(t) {
				this[lt] != t && ((this[lt] = t), (this[dt] = !0));
			},
		},
		FONT_FAMILY: {
			get: function() {
				return this._fontFamily || (this._fontFamily = "Verdana,helvetica,arial,sans-serif");
			},
			set: function(t) {
				this[bt] != t && ((this[bt] = t), (this[dt] = !0));
			},
		},
		FONT: {
			get: function() {
				return (!this[dt] && this[dt] !== M) || ((this[dt] = !1), (this[vt] = this[yt] + R + this[gt] + Et + this[xt])), this._font;
			},
		},
	});
	var PF = function(t) {
		(this._l5 = []), (this._nC = {}), t && this.add(t);
	};
	(PF[N] = {
		_l5: null,
		_nC: null,
		get: function(t) {
			return this[mt](t);
		},
		getById: function(t) {
			return this._nC[t];
		},
		getByIndex: function(t) {
			return this._l5[t];
		},
		forEach: function(t, i, n) {
			return RR(this._l5, t, i, n);
		},
		forEachReverse: function(t, i, n) {
			return BR(this._l5, t, i, n);
		},
		size: function() {
			return this._l5[F];
		},
		contains: function(t) {
			return this.containsById(t.id);
		},
		containsById: function(t) {
			return this._nC.hasOwnProperty(t);
		},
		setIndex: function(t, i) {
			var n = this._l5.indexOf(t);
			if (n < 0) throw new Error(pt + t.id + wt);
			return n != i && (this._l5[w](n, 1), this._l5[w](i, 0, t), !0);
		},
		setIndexAfter: function(t, i) {
			var n = this._l5.indexOf(t);
			if (n < 0) throw new Error(pt + t.id + wt);
			return n == i ? i : n == i + 1 ? i + 1 : (i < n && (i += 1), this._l5[w](n, 1), this._l5[w](i, 0, t), i);
		},
		setIndexBefore: function(t, i) {
			var n = this._l5[v](t);
			if (n < 0) throw new Error(pt + t.id + wt);
			return n == i ? i : n == i - 1 ? i - 1 : (n < i && --i, this._l5[w](n, 1), this._l5[w](i, 0, t), i);
		},
		indexOf: function(t) {
			return this._l5.indexOf(t);
		},
		getIndexById: function(t) {
			var i = this[Tt](t);
			return i ? this._l5.indexOf(i) : -1;
		},
		add: function(t, i) {
			return gF(t) ? this._hH(t, i) : this._mD(t, i);
		},
		addFirst: function(t) {
			return this.add(t, 0);
		},
		_hH: function(t, i) {
			if (0 == t[F]) return !1;
			for (var n = !1, e = 0 <= i, s = 0, h = (t = t._l5 || t).length; s < h; s++) {
				var r = t[s];
				null !== r && r !== M && this._mD(r, i, !0) && ((n = !0), e && i++);
			}
			return n;
		},
		_mD: function(t, i, n) {
			var e = t.id;
			return e !== M && !this[Nt](e) && (GR(this._l5, t, i), (this._nC[e] = t));
		},
		remove: function(t) {
			return gF(t) ? this._oXT(t) : t.id ? this._hE(t.id, t) : this[At](t);
		},
		_oXT: function(t) {
			if (0 == t.length) return !1;
			for (var i = !1, n = 0, e = (t = t._l5 || t)[F]; n < e; n++) {
				var s = t[n];
				if (null !== s && s !== M) {
					s.id === M && (s = this._nC[s]);
					var h = s.id;
					this._hE(h, s, !0) && (i = !0);
				}
			}
			return i;
		},
		_hE: function(t, i, n) {
			return !(
				t === M ||
				!this.containsById(t) ||
				((null !== i && i !== M) || (i = this.getById(t)), delete this._nC[t], WR(this._l5, i), 0)
			);
		},
		removeById: function(t) {
			var i = this._nC[t];
			return !!i && this._hE(t, i);
		},
		set: function(t) {
			if (!t || 0 == t) return this[Ot]();
			if (this.isEmpty() || !gF(t)) return this[Ot](), this.add(t);
			var i = [],
				n = {},
				e = 0;
			if (
				(RR(
					t,
					function(t) {
						this._nC[t.id] ? ((n[t.id] = t), e++) : i[L](t);
					},
					this
				),
				e != this[F])
			) {
				var s = [];
				this[It](function(t) {
					n[t.id] || s[L](t);
				}, this),
					s[F] && this._oXT(s);
			}
			return i[F] && this._hH(i), !0;
		},
		clear: function() {
			return !this.isEmpty() && ((this._l5[F] = 0), (this._nC = {}), !0);
		},
		toDatas: function() {
			return this._l5.slice(0);
		},
		isEmpty: function() {
			return 0 == this._l5.length;
		},
		valueOf: function() {
			return this._l5.length;
		},
		clone: function(t) {
			var i = new PF();
			return t ? i.add(kR(this._l5)) : i.add(this[Lt]()), i;
		},
	}),
		OF(PF.prototype, {
			datas: {
				get: function() {
					return this._l5;
				},
			},
			random: {
				get: function() {
					return this._l5 && this._l5[F] ? this._l5[pF(this._l5[F])] : null;
				},
			},
			length: {
				get: function() {
					return this._l5 ? this._l5[F] : 0;
				},
			},
		});
	function CF(t, i, n, e) {
		var s = t - n,
			h = i - e;
		return Math[St](s * s + h * h);
	}
	var RF = 2 * Math.PI,
		FF = 0.5 * Math.PI,
		BF = function(t, i, n) {
			t instanceof BF && ((i = t.y), (n = (t = t.x)[Mt])), this.set(t, i, n);
		};
	(BF[N] = {
		x: 0,
		y: 0,
		rotate: M,
		set: function(t, i, n) {
			(this.x = t || 0), (this.y = i || 0), (this[Mt] = n || 0);
		},
		negate: function() {
			(this.x = -this.x), (this.y = -this.y);
		},
		offset: function(t, i) {
			(this.x += t), (this.y += i);
		},
		equals: function(t) {
			return this.x == t.x && this.y == t.y;
		},
		distanceTo: function(t) {
			return CF(this.x, this.y, t.x, t.y);
		},
		toString: function() {
			return Dt + this.x + Pt + this.y + Q;
		},
		clone: function() {
			return new BF(this.x, this.y);
		},
	}),
		Object[E](BF[N], Ct, {
			get: function() {
				return Math.sqrt(this.x * this.x + this.y * this.y);
			},
		});
	function kF(t, i, n, e) {
		t !== M && this._oJ(t, i, n, e);
	}
	function GF(t, i, n) {
		var e, s, h;
		0 == t._oW
			? ((e = -1), (h = 0), (s = i))
			: 0 == t._oZ
			? ((e = 0), (h = 1), (s = n))
			: ((e = -1 / t._oW), (s = (t._oW - e) * i + t._oX), (h = 1));
		var r = new kF();
		return (
			(r._oW = e),
			(r._oX = s),
			(r._oZ = h),
			(r._oP = i),
			(r._oR = n),
			(r._n5 = Math[Rt](e, h)),
			(r._oZos = Math.cos(r._n5)),
			(r[Ft] = Math.sin(r._n5)),
			r
		);
	}
	function WF(t, i, n, e, s) {
		var h, r, a, o;
		if ((e < i ? (h = -1) : i < e && (h = 1), s < n ? (r = -1) : n < s && (r = 1), !h)) return { x: i, y: (o = r < 0 ? t.y : t[Bt]) };
		if (!r) return { x: (a = h < 0 ? t.x : t[kt]), y: n };
		var f = (n - s) / (i - e),
			c = n - f * i,
			u = h < 0 ? i - t.x : i - t[kt],
			_ = r < 0 ? n - t.y : n - t[Bt];
		return (
			Math.abs(f) >= Math.abs(_ / u) ? (a = ((o = r < 0 ? t.y : t[Bt]) - c) / f) : (o = f * (a = h < 0 ? t.x : t[kt]) + c),
			{ x: a, y: o }
		);
	}
	function $F(t, i) {
		(this[$t] = t), (this[Xt] = i);
	}
	function XF(t, i, n, e, s, h, r, a) {
		return (
			!(r <= 0 || a <= 0 || n <= 0 || e <= 0) &&
			((a += h), (n += t), (e += i), ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
		);
	}
	function HF(t, i, n, e, s, h) {
		return t <= s && s <= t + n && i <= h && h <= i + e;
	}
	function YF(t, i, n, e, s, h, r, a, o) {
		return o && ((t -= o), (i -= o), (n += o + o), (e += o + o)), t <= s && i <= h && s + r <= t + n && h + a <= i + e;
	}
	(kF[N] = {
		_oP: null,
		_oR: null,
		_oT: null,
		_oU: null,
		_oW: null,
		_oX: null,
		_oZ: 1,
		_oJ: function(t, i, n, e) {
			(this._oP = t),
				(this._oR = i),
				(this._oT = n),
				(this._oU = e),
				t == n
					? ((this._oW = -1), (this._oZ = 0), (this._oX = t))
					: ((this._oW = (i - e) / (t - n)), (this._oX = i - this._oW * t), (this._oZ = 1)),
				(this._n5 = Math[Rt](this._oU - this._oR, this._oT - this._oP)),
				(this[Gt] = Math.cos(this._n5)),
				(this._sin = Math.sin(this._n5));
		},
		_dS: function(t) {
			return 0 == this._oZ ? Number.NaN : this._oW * t + this._oX;
		},
		_dT: function(t) {
			return 0 == this._oW ? Number.NaN : (t - this._oX) / this._oW;
		},
		_$c: function(t) {
			var i,
				n,
				e,
				s,
				h,
				r,
				a,
				o = t[0],
				f = t[2],
				c = t[4],
				u = t[1],
				_ = t[3],
				l = t[5],
				d = this._oW,
				b = this._oX;
			if (
				0 !=
				(h =
					0 == this._oZ
						? ((e = Math[St]((-d * d * o - d * b) * c + d * d * f * f + 2 * d * b * f - d * b * o)),
						  (s = -d * f + d * o),
						  d * c - 2 * d * f + d * o)
						: ((e = Math[St](
								(d * o - u + b) * l +
									_ * _ +
									(-2 * d * f - 2 * b) * _ +
									(d * c + b) * u +
									(-d * d * o - d * b) * c +
									d * d * f * f +
									2 * d * b * f -
									d * b * o
						  )),
						  (s = -_ + u + d * f - d * o),
						  l - 2 * _ + u - d * c + 2 * d * f - d * o))
			)
				return (
					(n = (-e + s) / h),
					0 <= (i = (e + s) / h) && i <= 1 && (r = dk(i, t)),
					0 <= n && n <= 1 && (a = dk(n, t)),
					r && a ? [r, a] : r || a || void 0
				);
		},
		_3N: function(t, i, n) {
			if (this._oW == t._oW || (0 == this._oZ && 0 == t._oZ)) return null;
			var e, s, h, r, a;
			if (
				((e = 0 == this._oZ ? this._oX : 0 == t._oZ ? t._oX : (t._oX - this._oX) / (this._oW - t._oW)),
				(s = 0 == this._oW ? this._oX : 0 == t._oW ? t._oX : this._oZ ? this._oW * e + this._oX : t._oW * e + t._oX),
				!i)
			)
				return { x: e, y: s };
			if (n) r = -(h = -i / 2);
			else {
				var o = -(h = -CF(this._oP, this._oR, e, s)) + (r = CF(this._oT, this._oU, e, s));
				if (i < o) {
					var f = i / o;
					(h *= f), (r *= f);
				} else a = (i - o) / 2;
			}
			var c = this._7H(e, s, h),
				u = this._7H(e, s, r);
			return a && ((c[Wt] = a), (u[Wt] = a)), [c, u];
		},
		_7H: function(t, i, n) {
			return 0 == this._oZ ? { x: t, y: i + n } : { x: t + n * this[Gt], y: i + n * this._sin };
		},
	}),
		($F[N] = {
			width: 0,
			height: 0,
			isEmpty: function() {
				return this[$t] <= 0 || this[Xt] <= 0;
			},
			clone: function() {
				return new $F(this.width, this[Xt]);
			},
			toString: function() {
				return Ht + this[$t] + Pt + this[Xt] + Q;
			},
		});
	var JF = function(t, i, n, e) {
		t instanceof Object && !vF(t) && ((i = t.y), (n = t[$t]), (e = t[Xt]), (t = t.x)),
			n === M && (n = -1),
			e === M && (e = -1),
			(this.x = t || 0),
			(this.y = i || 0),
			(this.width = n),
			(this[Xt] = e);
	};
	function ZF(t, i, n, e) {
		1 == arguments[F] ? (i = n = e = t) : 2 == arguments.length && ((n = t), (e = i)), this.set(t, i, n, e);
	}
	(JF[N] = {
		x: 0,
		y: 0,
		width: -1,
		height: -1,
		setByRect: function(t) {
			(this.x = t.x || 0), (this.y = t.y || 0), (this[$t] = t[$t] || 0), (this[Xt] = t[Xt] || 0);
		},
		set: function(t, i, n, e) {
			(this.x = t || 0), (this.y = i || 0), (this[$t] = n || 0), (this.height = e || 0);
		},
		offset: function(t, i) {
			return (this.x += t), (this.y += i), this;
		},
		contains: function(t, i, n, e) {
			if (1 != arguments[F])
				return 2 == arguments[F]
					? t >= this.x && t <= this.x + this.width && i >= this.y && i <= this.y + this.height
					: YF(this.x, this.y, this[$t], this[Xt], t, i, n || 0, e || 0);
			if (r == typeof t && Yt in t && Jt in t) return this[Zt](t.x, t.y, t.width, t[Xt]);
			throw { message: Ut };
		},
		intersectsPoint: function(t, i, n) {
			return (
				!(this.width <= 0 && this[Xt] <= 0) &&
				(n ? this[jt](t - n, i - n, 2 * n, 2 * n) : t >= this.x && t <= this.x + this[$t] && i >= this.y && i <= this.y + this[Xt])
			);
		},
		intersectsRect: function(t, i, n, e) {
			return XF(this.x, this.y, this[$t], this[Xt], t, i, n, e);
		},
		intersects: function(t, i) {
			return vF(t[$t]) ? this[jt](t.x, t.y, t[$t], t[Xt]) : this[zt](t, i);
		},
		intersection: function(t, i, n, e) {
			var s = this.x,
				h = this.y,
				r = s,
				a = h,
				o = t,
				f = i;
			return (
				s < t && (s = t),
				h < i && (h = i),
				(o += n) < (r += this.width) && (r = o),
				(f += e) < (a += this[Xt]) && (a = f),
				(a -= h),
				(r -= s) < 0 || a < 0 ? null : new JF(s, h, r, a)
			);
		},
		addPoint: function(t) {
			this.add(t.x, t.y);
		},
		add: function(t, i) {
			if (vF(t.width)) return this.addRect(t.x, t.y, t[$t], t.height);
			if ((vF(t.x) && ((i = t.y), (t = t.x)), this.width < 0 || this[Xt] < 0))
				return (this.x = t), (this.y = i), void (this[$t] = this.height = 0);
			var n = this.x,
				e = this.y,
				s = this[$t],
				h = this[Xt];
			(s += n),
				(h += e),
				t < n && (n = t),
				i < e && (e = i),
				s < t && (s = t),
				h < i && (h = i),
				(h -= e),
				(s -= n) > Number[Vt] && (s = Number[Vt]),
				h > Number[Vt] && (h = Number[Vt]),
				this.set(n, e, s, h);
		},
		addRect: function(t, i, n, e) {
			var s = this.width,
				h = this[Xt];
			(s < 0 || h < 0) && this.set(t, i, n, e);
			var r = n,
				a = e;
			if (!(r < 0 || a < 0)) {
				var o = this.x,
					f = this.y;
				(s += o),
					(h += f),
					t < o && (o = t),
					i < f && (f = i),
					s < (r += t) && (s = r),
					h < (a += i) && (h = a),
					(h -= f),
					(s -= o) > Number[Vt] && (s = Number[Vt]),
					h > Number[Vt] && (h = Number.MAX_VALUE),
					this.set(o, f, s, h);
			}
		},
		shrink: function(t, i, n, e) {
			return (
				vF(t)
					? (e =
							1 == arguments.length
								? (i = n = t || 0)
								: 2 == arguments.length
								? ((n = t || 0), i || 0)
								: ((t = t || 0), (i = i || 0), (n = n || 0), e || 0))
					: ((i = t[Kt] || 0), (n = t[Bt] || 0), (e = t[kt] || 0), (t = t.top || 0)),
				(this.x += i),
				(this.y += t),
				(this[$t] -= i + e),
				(this[Xt] -= t + n),
				this
			);
		},
		grow: function(t, i, n, e) {
			return (
				vF(t)
					? (e =
							1 == arguments.length
								? (i = n = t || 0)
								: 2 == arguments.length
								? ((n = t || 0), i || 0)
								: ((t = t || 0), (i = i || 0), (n = n || 0), e || 0))
					: ((i = t[Kt] || 0), (n = t[Bt] || 0), (e = t[kt] || 0), (t = t.top || 0)),
				(this.x -= i),
				(this.y -= t),
				(this[$t] += i + e),
				(this[Xt] += t + n),
				this
			);
		},
		scale: function(t) {
			return (this.x *= t), (this.y *= t), (this[$t] *= t), (this[Xt] *= t), this;
		},
		isEmpty: function() {
			return this[$t] <= 0 && this[Xt] <= 0;
		},
		toString: function() {
			return this.x + Qt + this.y + Qt + this[$t] + Qt + this[Xt];
		},
		union: function(t) {
			var i = this[$t],
				n = this[Xt];
			if (i < 0 || n < 0) return new JF(t.x, t.y, t[$t], t[Xt]);
			var e = t[$t],
				s = t.height;
			if (e < 0 || s < 0) return new JF(this.x, this.y, this[$t], this[Xt]);
			var h = this.x,
				r = this.y;
			(i += h), (n += r);
			var a = t.x,
				o = t.y;
			return (
				a < h && (h = a),
				o < r && (r = o),
				i < (e += a) && (i = e),
				n < (s += o) && (n = s),
				(n -= r),
				(i -= h) > Number[Vt] && (i = Number.MAX_VALUE),
				n > Number[Vt] && (n = Number[Vt]),
				new JF(h, r, i, n)
			);
		},
		clear: function() {
			this.set(0, 0, -1, -1);
		},
		equals: function(t) {
			return t && this.x == t.x && this.y == t.y && this[$t] == t[$t] && this[Xt] == t[Xt];
		},
		clone: function(t, i) {
			return new JF(this.x + (t || 0), this.y + (i || 0), this[$t], this[Xt]);
		},
		toArray: function() {
			return [this.x, this.y, this[$t], this[Xt]];
		},
		getIntersectionPoint: function(t, i, n, e) {
			return WF(this, t, i, n, e);
		},
	}),
		XR(JF, $F),
		(JF.equals = function(t, i) {
			return t == i || (t && i && t.x == i.x && t.y == i.y && t[$t] == i[$t] && t[Xt] == i[Xt]);
		}),
		OF(JF[N], {
			left: {
				get: function() {
					return this.x;
				},
			},
			top: {
				get: function() {
					return this.y;
				},
			},
			bottom: {
				get: function() {
					return this.y + this.height;
				},
			},
			right: {
				get: function() {
					return this.x + this[$t];
				},
			},
			cx: {
				get: function() {
					return this.x + this.width / 2;
				},
			},
			cy: {
				get: function() {
					return this.y + this[Xt] / 2;
				},
			},
			center: {
				get: function() {
					return new BF(this.cx, this.cy);
				},
			},
		}),
		(JF[qt] = XF),
		(JF.intersection = function(t, i, n, e, s, h, r, a) {
			var o = t,
				f = i,
				c = s,
				u = h;
			return (
				t < s && (t = s),
				i < h && (i = h),
				(c += r) < (o += n) && (o = c),
				(u += a) < (f += e) && (f = u),
				(f -= i),
				(o -= t) < 0 || f < 0 ? null : new JF(t, i, o, f)
			);
		}),
		(JF[zt] = HF),
		(ZF[N] = {
			top: 0,
			bottom: 0,
			left: 0,
			right: 0,
			set: function(t, i, n, e) {
				(this.top = t || 0), (this.left = i || 0), (this.bottom = n || 0), (this[kt] = e || 0);
			},
			clone: function() {
				return new ZF(this.top, this[Kt], this.bottom, this.right);
			},
			equals: function(t) {
				return t && this.top == t.top && this[Bt] == t[Bt] && this[Kt] == t[Kt] && this[kt] == t[kt];
			},
		});
	var UF = function(t, i) {
		(this[ti] = t), (this[ii] = i);
	};
	(UF[N] = {
		verticalPosition: !1,
		horizontalPosition: !1,
		toString: function() {
			return (this[ti] || "") + (this.verticalPosition || "");
		},
	}),
		AF(UF.prototype, ni, {
			get: function() {
				return (this.horizontalPosition || "") + (this[ii] || "");
			},
		});
	var jF = ei,
		zF = si,
		VF = hi,
		KF = ri;
	(UF[ai] = new UF(jF, VF)),
		(UF[oi] = new UF(jF, fi)),
		(UF[ci] = new UF(jF, KF)),
		(UF[ui] = new UF(_i, VF)),
		(UF[li] = new UF(_i, fi)),
		(UF[di] = new UF(_i, KF)),
		(UF[bi] = new UF(zF, VF)),
		(UF[vi] = new UF(zF, fi)),
		(UF[yi] = new UF(zF, KF));
	var QF = [UF[ai], UF[oi], UF[ci], UF[ui], UF[li], UF.CENTER_BOTTOM, UF.RIGHT_TOP, UF[vi], UF[yi]];
	function qF(t, i) {
		var n = tB(t, i[$t], i.height);
		return (n.x += i.x || 0), (n.y += i.y || 0), n;
	}
	function tB(t, i, n) {
		if (!t) return { x: 0, y: 0 };
		if ((yF(t) && (t = UF[gi](t)), t instanceof UF)) {
			var e,
				s,
				h = t[ti],
				r = t[ii];
			switch (h) {
				case jF:
					e = 0;
					break;
				case zF:
					e = i;
					break;
				default:
					e = i / 2;
			}
			switch (r) {
				case VF:
					s = 0;
					break;
				case KF:
					s = n;
					break;
				default:
					s = n / 2;
			}
			return { x: e, y: s };
		}
		if (t.x !== M) return t[Ei] ? { x: t.x * i, y: t.y * n } : { x: t.x, y: t.y };
		throw new Error("Position not be supported - " + t);
	}
	function iB(t, i, n, e, s) {
		this.set(t, i, n, e), (this[xi] = s);
	}
	function nB(t, i, n, e) {
		(this[pi] = t), (this[wi] = i), (this[Ti] = n), (this[Ni] = e);
	}
	AF(UF, Z, {
		get: function() {
			return QF[pF(QF[F])];
		},
	}),
		(UF[gi] = function(t) {
			for (var i in UF) {
				var n = UF[i];
				if (n && Z != i && n instanceof UF && n.toString() == t) return n;
			}
			throw new Error("Position not be supported - " + t);
		}),
		(iB[N] = {
			radius: 0,
			classify: function(t, i, n, e) {
				return t < i ? 0 : t < i + e ? 1 : t < n - e ? 2 : t < n ? 3 : 4;
			},
			intersectsRect: function(t, i, n, e) {
				if (!1 === YR(this, iB, jt, arguments)) return !1;
				var s = this.x,
					h = this.y,
					r = s + this.width,
					a = h + this[Xt],
					o = 2 * radius,
					f = 2 * radius,
					c = Math.min(this[$t], Math.abs(o)) / 2,
					u = Math.min(this.height, Math.abs(f)) / 2,
					_ = this.classify(t, s, r, c),
					l = this[mi](t + n, s, r, c),
					d = this[mi](i, h, a, u),
					b = this[mi](i + e, h, a, u);
				return (
					2 == _ ||
					2 == l ||
					2 == d ||
					2 == b ||
					(_ < 2 && 2 < l) ||
					(d < 2 && 2 < b) ||
					((t = 1 == l ? (t = t + n - (s + c)) : (t -= r - c)),
					(i = 1 == b ? (i = i + e - (h + u)) : (i -= a - u)),
					(t /= c) * t + (i /= u) * i <= 1)
				);
			},
			intersectsPoint: function(t, i) {
				if (!1 === YR(this, iB, zt, arguments)) return !1;
				var n = this.x,
					e = this.y,
					s = n + this.width,
					h = e + this.height;
				if (t < n || i < e || s <= t || h <= i) return !1;
				var r = 2 * radius,
					a = 2 * radius,
					o = Math.min(this[$t], Math.abs(r)) / 2,
					f = Math.min(this.height, Math.abs(a)) / 2;
				return (
					(t >= (n += o) && t < (n = s - o)) ||
					(i >= (e += f) && i < (e = h - f)) ||
					(t = (t - n) / o) * t + (i = (i - e) / f) * i <= 1
				);
			},
			clone: function() {
				return new iB(this.x, this.y, this.width, this[Xt], this[xi]);
			},
		}),
		XR(iB, JF),
		(nB.prototype = {
			source: null,
			type: null,
			kind: null,
			value: null,
			toString: function() {
				return Ai + this[pi] + Oi + this[wi] + Ii + this[Ti];
			},
		});
	var eB = function(t, i, n, e, s) {
		(this.source = t), (this[Ti] = i), (this.oldValue = e), (this[Ni] = n), (this[Li] = s);
	};
	function sB(t, i, n) {
		(this[pi] = t), (this[Pi] = t[Fi]), (this.value = i), (this[Bi] = n), this.oldValue && (this[ki] = this[Pi][Gi](t));
	}
	function hB(t, i) {
		(this.source = t), (this[Ni] = i);
	}
	function rB(t, i) {
		(this.source = t), (this[Ni] = i);
	}
	function aB(t, i, n, e) {
		(this.source = i), (this[Pi] = n), (this.value = e), (this[Fi] = t), (this[Xi] = i), (this[ki] = n), (this[Bi] = e);
	}
	function oB() {}
	function fB(t, i) {
		(this.listener = t),
			(this[Ji] = i),
			t instanceof Function ? (this[g] = t) : ((this[g] = t[g]), (this[d] = t.beforeEvent)),
			(this[Zi] = function(t) {
				return t && this[Yi] == t.listener && this[Ji] == t[Ji];
			});
	}
	(eB[N] = {
		type: Mi,
		propertyType: null,
		toString: function() {
			return Ai + this.source + Oi + this[wi] + Si + this[Ti] + Di + this[Pi] + Ci + this[Ni];
		},
	}),
		XR(eB, nB),
		AF(eB[N], Ri, {
			get: function() {
				return this[Ti];
			},
			set: function(t) {
				this.kind = t;
			},
		}),
		(sB[N] = { kind: Fi }),
		XR(sB, eB),
		(hB[N].kind = Wi),
		XR(hB, eB),
		(rB.prototype[Ti] = $i),
		XR(rB, eB),
		(aB.prototype.kind = Hi),
		XR(aB, eB),
		(oB.prototype = {
			listener: null,
			beforeEvent: function(t) {
				return null == this[Yi] || !this[Yi][d] || this.listener[d](t);
			},
			onEvent: function(t) {
				null != this[Yi] && this[Yi][g] && this.listener[g](t);
			},
		});
	var cB = function() {
		HR(this, cB, arguments), (this[Ui] = {}), (this[ji] = []);
	};
	function uB(t, i, n, e, s) {
		(this[pi] = t), (this[wi] = Ki), (this.kind = i), (this[Qi] = n), (this[qi] = e), (this[ki] = s);
	}
	function _B() {
		(this.id = ++VR), (this._dC = {});
	}
	function lB() {
		(this._l5 = []), (this._nC = {}), (this._1E = new cB());
	}
	(fB.prototype = {
		equals: function(t) {
			return t && this[Yi] == t[Yi] && this[Ji] == t.scope;
		},
		destroy: function() {
			delete this.scope, delete this[Yi];
		},
	}),
		(cB.prototype = {
			listeners: null,
			_oZ7: function() {
				return this[ji] && 0 < this.listeners[F];
			},
			_7J: function(t, i) {
				return t instanceof cB ? t : new fB(t, i);
			},
			_oWO: function(t, i) {
				if (t instanceof cB) return this[ji][v](t);
				for (var n = this[ji], e = 0, s = n.length; e < s; e++) {
					var h = n[e];
					if (h[Yi] == t && h[Ji] == i) return e;
				}
				return -1;
			},
			contains: function(t, i) {
				return 0 <= this._oWO(t, i);
			},
			addListener: function(t, i) {
				if (this.contains(t, i)) return !1;
				this.listeners.push(this._7J(t, i));
			},
			removeListener: function(t, i, n) {
				var e = this[zi](t, i);
				0 <= e && this.listeners[w](e, 1);
			},
			on: function(t, i) {
				this[Vi](t, i);
			},
			un: function(t, i, n) {
				this.removeListener(t, i, n);
			},
			onEvent: function(i) {
				if (!this.listeners) return !1;
				RR(
					this[ji],
					function(t) {
						t[g] && (t[Ji] ? t.onEvent[m](t[Ji], i) : t[g](i));
					},
					this
				);
			},
			beforeEvent: function(i) {
				return (
					!this[ji] ||
					RR(
						this[ji],
						function(t) {
							return !t[d] || (t[Ji] ? t[d][m](t[Ji], i) : t.beforeEvent(i));
						},
						this
					)
				);
			},
			_eZ: function(t) {
				return !1 !== this[d](t) && (this.onEvent(t), !0);
			},
			clear: function() {
				this[ji] = [];
			},
			destroy: function() {
				this[Ot]();
			},
		}),
		XR(cB, oB),
		(uB[N] = {
			index: -1,
			oldIndex: -1,
			toString: function() {
				return Ai + this[pi] + Oi + this.type + Ii + this[Ti] + tn + this[Qi] + nn + this[qi] + en + this.oldIndex;
			},
		}),
		XR(uB, nB),
		(uB[sn] = hn),
		(uB[rn] = k),
		(uB[an] = Ot),
		(uB[on] = fn),
		(_B[N] = {
			_dC: null,
			id: null,
			get: function(t) {
				return this._dC[t];
			},
			set: function(t, i) {
				var n = this.get(t);
				if (n === i) return !1;
				var e = new eB(this, t, i, n);
				return (e.propertyType = qB[cn]), this[un](t, i, e, this._dC);
			},
			_oXR: function(t, i, n, e) {
				return !1 !== this.beforeEvent(n) && ((e = e || this._dC), i === M ? delete e[t] : (e[t] = i), this[g](n), !0);
			},
			remove: function(t) {
				this.set(t, null);
			},
			valueOf: function() {
				return this.id;
			},
			toString: function() {
				return this.id;
			},
			_f8: function(t, i) {
				if ((i === M && (i = -1), this == t || t == this._lB)) return !1;
				if (t && this == t._lB && !t._f8(null)) return !1;
				var n,
					e,
					s = new sB(this, t, i);
				if (!this[d](s)) return !1;
				var h,
					r,
					a,
					o,
					f = this._lB;
				return !(
					(t && ((n = new hB(t, this)), !t.beforeEvent(n))) ||
					(null != f && ((e = new rB(f, this)), !f[d](e))) ||
					(null != (this._lB = t) && ((r = i), (h = t)[y].add(this, r), h[_n](this, r)),
					null != f && ((o = this), (a = f)._hJ && (a._hJ[k](o), a.onChildRemove(o))),
					this[g](s),
					null != t && t[g](n),
					null != f && f.onEvent(e),
					this[ln](f, t),
					0)
				);
			},
			addChild: function(t, i) {
				var n = t._f8(this, i);
				return n && this.onChildAdd(t, i), n;
			},
			removeChild: function(t) {
				if (!this._hJ || !this._hJ[Zt](t)) return !1;
				var i = t._f8(null);
				return this[dn](t), i;
			},
			toChildren: function() {
				return this._hJ ? this._hJ[Lt]() : null;
			},
			clearChildren: function() {
				if (this._hJ && this._hJ[F]) {
					var t = this[bn]();
					RR(
						t,
						function(t) {
							t._f8(null);
						},
						this
					),
						this[vn](t);
				}
			},
			forEachChild: function(t, i) {
				return !!this[p]() && this._hJ[It](t, i);
			},
			onChildAdd: function(t, i) {},
			onChildRemove: function(t) {},
			onChildrenClear: function(t) {},
			onParentChanged: function(t, i) {},
			getChildIndex: function(t) {
				return this._hJ && this._hJ[F] ? this._hJ[v](t) : -1;
			},
			setChildIndex: function(t, i) {
				if (!this._hJ || !this._hJ[F]) return !1;
				var n = this._hJ.indexOf(t);
				if (n < 0 || n == i) return !1;
				var e = new aB(this, t, n, i);
				return !1 !== this[d](e) && (this._hJ[k](t) && this._hJ.add(t, i), this[g](e), !0);
			},
			hasChildren: function() {
				return this._hJ && 0 < this._hJ.length;
			},
			getChildAt: function(t) {
				return null == this._hJ ? null : this._hJ._l5[t];
			},
			isDescendantOf: function(t) {
				if (!t[p]()) return !1;
				for (var i = this[Fi]; null != i; ) {
					if (t == i) return !0;
					i = i[Fi];
				}
				return !1;
			},
			firePropertyChangeEvent: function(t, i, n, e) {
				this[g](new eB(this, t, i, n, e));
			},
		}),
		XR(_B, oB),
		OF(_B[N], {
			childrenCount: {
				get: function() {
					return this._hJ ? this._hJ.length : 0;
				},
			},
			children: {
				get: function() {
					return this._hJ || (this._hJ = new PF()), this._hJ;
				},
			},
			parent: {
				get: function() {
					return this._lB;
				},
				set: function(t) {
					this._f8(t, -1);
				},
			},
			properties: {
				get: function() {
					return this._dC;
				},
				set: function(t) {
					this._dC != t && (this._dC = t);
				},
			},
		}),
		(lB[N] = {
			beforeEvent: function(t) {
				return null == this._1E || !this._1E[d] || this._1E[d](t);
			},
			onEvent: function(t) {
				this._1E instanceof Function ? this._1E(t) : null != this._1E && this._1E[g] && this._1E[g](t);
			},
			_1E: null,
			setIndex: function(t, i) {
				if (!this[Zt](t)) throw new Error(pt + t[yn]() + wt);
				var n = this.indexOf(t);
				if (n == i) return !1;
				var e = new uB(this, uB.KIND_INDEX_CHANGE, t, i, n);
				return !1 !== this[d](e) && (this._l5[w](n, 1), this._l5.splice(i, 0, t), this.onEvent(e), !0);
			},
			_hH: function(t, i) {
				if (0 == t[F]) return !1;
				var n = !1,
					e = 0 <= i,
					s = new uB(this, uB[sn], t, i);
				if (!1 === this.beforeEvent(s)) return !1;
				for (var h = [], r = 0, a = (t = t._l5 || t)[F]; r < a; r++) {
					var o = t[r];
					null !== o && o !== M && this._mD(o, i, !0) && (h[L](o), (n = !0), e && i++);
				}
				return (s[Qi] = h), this.onEvent(s), n;
			},
			_mD: function(t, i, n) {
				if (!1 === this[gn](t)) return !1;
				if (n) return YR(this, lB, En, arguments);
				var e = new uB(this, uB.KIND_ADD, t, i);
				return !1 !== this[d](e) && !!YR(this, lB, En, arguments) && (this._mC(t, e), t);
			},
			_mC: function(t, i) {
				this[g](i);
			},
			_oXT: function(t) {
				if (0 == t[F]) return !1;
				var i = new uB(this, uB[rn], t);
				if (!1 === this[d](i)) return !1;
				for (var n = [], e = !1, s = 0, h = (t = t._l5 || t).length; s < h; s++) {
					var r = t[s];
					if (null !== r && r !== M) {
						var a = r.id || r;
						r.id === M && (r = null), this._hE(a, r, !0) && (n[L](r), (e = !0));
					}
				}
				return (i[Qi] = n), this[g](i), e;
			},
			_hE: function(t, i, n) {
				if (n) return YR(this, lB, xn, arguments);
				var e = new uB(this, uB[rn], i);
				return !1 !== this.beforeEvent(e) && !!YR(this, lB, xn, arguments) && (this.onEvent(e), !0);
			},
			clear: function() {
				if (this[mn]()) return !1;
				var t = new uB(this, uB.KIND_CLEAR, this[Lt]());
				return !1 !== this[d](t) && !!YR(this, lB, Ot) && (this.onEvent(t), !0);
			},
			accept: function(t) {
				return !this[pn] || !1 !== this[pn](t);
			},
		}),
		XR(lB, PF),
		AF(lB[N], wn, {
			get: function() {
				return this._1E;
			},
		});
	var dB = function() {
		HR(this, dB, arguments),
			(this[Tn] = new cB()),
			(this[Nn] = new bB(this)),
			(this._selectionModel._1E = this[Tn]),
			(this[An] = new cB()),
			this[An].addListener({ beforeEvent: this[On], onEvent: this[In] }, this),
			(this[Ln] = new cB()),
			(this.childIndexChangeDispatcher = new cB()),
			(this.$roots = new PF());
		var s = this;
		this[Mn][Sn] = function(t, i) {
			if (!s.$roots.contains(t)) throw new Error(pt + t.id + wt);
			var n = s[Mn]._l5.indexOf(t);
			if (n == i) return !1;
			s.$roots._l5[w](n, 1), s.$roots._l5[w](i, 0, t), (s[Dn] = !0);
			var e = new aB(s, t, n, i);
			return s._1Z(e), !0;
		};
	};
	(dB[N] = {
		selectionModel: null,
		selectionChangeDispatcher: null,
		dataChangeDispatcher: null,
		parentChangeDispatcher: null,
		roots: null,
		_mC: function(t, i) {
			(t[Yi] = this[An]), t[Fi] || this[Mn].add(t), this[g](i);
		},
		_hE: function(t, i) {
			if (YR(this, dB, xn, arguments)) {
				if (i instanceof jW) i.disconnect();
				else if (i instanceof QW) {
					var n = i[Pn]();
					this[k](n);
				}
				var e = i.parent;
				return null == e ? this.$roots.remove(i) : (e[Cn](i), (e[Rn] = !0)), i[p]() && this.remove(i[bn]()), !(i[Yi] = null);
			}
			return !1;
		},
		_5S: function(t) {
			var i = t.source;
			this[Zt](i) && (null == i.parent ? this[Mn].add(i) : null == t[Pi] && this[Mn][k](i), this[Ln][g](t));
		},
		_1Z: function(t) {
			this.childIndexChangeDispatcher.onEvent(t);
		},
		beforeDataPropertyChange: function(t) {
			return !(t instanceof sB) || this[Ln].beforeEvent(t);
		},
		onDataPropertyChanged: function(t) {
			if (t instanceof sB) return (this[Dn] = !0), (t.source[Dn] = !0), void this._5S(t);
			t instanceof aB && ((this._dHIndexFlag = !0), (t.source[Dn] = !0), this._1Z(t));
		},
		toRoots: function() {
			return this.$roots.toDatas();
		},
		_hF: function(t) {
			var i,
				n = t._lB,
				e = (i = n ? n._hJ : this.$roots)[v](t);
			if (e < 0) throw new Error(Fn + t + "' not exist in the box");
			return 0 == e ? n : i[mt](e - 1);
		},
		_hG: function(t) {
			var i,
				n = t._lB,
				e = (i = n ? n._hJ : this[Mn])[v](t);
			if (e < 0) throw new Error(Fn + t + "' not exist in the box");
			return e == i[F] - 1 ? (n ? this._hG(n) : null) : i[mt](e + 1);
		},
		forEachByDepthFirst: function(t, i, n) {
			return !!this[Mn].length && SR(this[Mn], t, i, n);
		},
		forEachByDepthFirstReverse: function(t, i, n) {
			return !!this.$roots[F] && DR(this[Mn], t, i, n);
		},
		forEachByBreadthFirst: function(t, i) {
			return !!this[Mn].length && PR(this[Mn], t, i);
		},
		forEachByBreadthFirstReverse: function(t, i) {
			return (
				!!this.$roots[F] &&
				(function(t, i, n) {
					for (var e, s = (t._l5 || t).slice(0); s.length; ) {
						if (((e = s[s[F] - 1]), (s = s[w](0, s[F] - 1)), !1 === i[m](n, e))) return !1;
						if (e[p]()) {
							var h = e.children;
							(h = h._l5 || h), (s = s[B](h));
						}
					}
					return !0;
				})(this.$roots, t, i)
			);
		},
		clear: function() {
			return !!YR(this, dB, Ot) && (this.$roots[Ot](), this[Bn][Ot](), !0);
		},
	}),
		XR(dB, lB),
		OF(dB.prototype, {
			selectionModel: {
				get: function() {
					return this._selectionModel;
				},
			},
			roots: {
				get: function() {
					return this.$roots;
				},
			},
		});
	var bB = function(t) {
		HR(this, bB),
			(this.box = t),
			(this._oXoxChangeListener = {
				onEvent: function(t) {
					uB[rn] == t[Ti] ? (null != t[Qi] ? this[k](t.data) : null != t[kn] && this[k](t[kn])) : uB[an] == t.kind && this[Ot]();
				},
			}),
			this.box.listChangeDispatcher[Vi](this[Gn], this);
	};
	function vB(t) {
		return t[Wn](/^-ms-/, $n)[Wn](/-([\da-z])/gi, function(t, i) {
			return i[Xn]();
		});
	}
	(bB[N] = {
		box: null,
		isSelected: function(t) {
			return this[Nt](t.id || t);
		},
		select: function(t) {
			return this.add(t);
		},
		unselect: function(t) {
			return this[k](t);
		},
		reverseSelect: function(t) {
			return this.contains(t) ? this[k](t) : this.add(t);
		},
		accept: function(t) {
			return this.box.contains(t);
		},
	}),
		XR(bB, lB);
	var yB = null,
		gB = null,
		EB = (function() {
			if (!x[Hn])
				return function(t) {
					return t;
				};
			var n = x.createElement(Yn)[Jn],
				e = {};
			return function(t) {
				if (e[t]) return e[t];
				var i = vB(t);
				return n[i] !== M || (gB && n[(i = vB(gB + i))] !== M) ? (e[t] = i) : t;
			};
		})();
	function xB(t, i) {
		var n,
			e,
			s = t.style;
		if (!s) return !1;
		for (n in i) i.hasOwnProperty(n) && (e = EB(n)) && (s[e] = i[n]);
		return t;
	}
	function mB(t, i, n) {
		(i = EB(i)) && (t.style[i] = n);
	}
	function pB(t, i) {
		if (!yB) return !1;
		i &&
			!yF(i) &&
			(i = (function(t) {
				var i,
					n,
					e = "";
				for (i in t)
					t.hasOwnProperty(i) &&
						(n = EB(i)) &&
						(e +=
							n
								.replace(/[A-Z]/g, function(t) {
									return Zn + t[Un]();
								})
								[Wn](/^ms-/, jn) +
							zn +
							t[i] +
							Vn);
				return e ? e[Kn](0, e[F] - 1) : e;
			})(i)),
			yB[Qn] ? yB.insertRule(t + qn + i + te, 0) : yB[ie] && yB[ie](t, i, 0);
	}
	var wB = {};
	function TB(t, i) {
		var n = t[ne];
		return n ? (i = i || t[ee]()).width / n : 1;
	}
	function NB(t, i, n, e, s) {
		if (s) {
			var h = function(t) {
				h.handle.call(h[Ji], t);
			};
			return (h.scope = s), (h.handle = n), t[_e](i, h, e), h;
		}
		return t.addEventListener(i, n, e), n;
	}
	!(function() {
		if (x.head) {
			for (var t = x[se], i = "Webkit Moz O ms Khtml"[C](R), n = 0; n < i.length; n++)
				if (t[Jn][i[n] + he] !== M) {
					gB = Zn + i[n][Un]() + Zn;
					break;
				}
			var e,
				s,
				h = x.createElement(Jn);
			for (var r in (u[re] || h.appendChild(x[ae]("")), (h[wi] = oe), (h.id = fe), t[ce](h), (yB = h.sheet), wB)) {
				var a = wB[r];
				for (var o in ((e = r), (s = ""), a)) s += EB(o) + zn + a[o] + ue;
				pB(e, s);
			}
		}
	})(),
		(DF.DOUBLE_CLICK_INTERVAL_TIME = 200),
		(DF[le] = 800),
		(DF[de] = !0);
	var AB,
		OB = O in u,
		IB = OB && /mobile|tablet|ip(ad|hone|od)|android/i[A](navigator[n]);
	if (IB) AB = be;
	else {
		var LB = ve in u ? "mousewheel" : ye;
		(AB = ge + LB), OB && (AB += Ee);
	}
	function MB(t) {
		return u[xe] && t instanceof u[xe];
	}
	function SB() {
		return DF[me];
	}
	function mF(t) {
		EF(t), xF(t);
	}
	function DB(t) {
		WB[pe] && WB[pe]._3D(t);
	}
	function PB(t) {
		WB._oZurrentItem && (WB[pe]._5F(t), CB(null));
	}
	AB = AB[C](/[\s,]+/);
	function CB(t) {
		WB._oZurrentItem != t && (WB._oZurrentItem && (WB[pe].__dragging = !1), (WB[pe] = t));
	}
	var EF = function(t) {
			t[$] ? t.preventDefault() : (t[we] = !1);
		},
		xF = function(t) {
			t[H] && t[H](), (t[Y] = !0);
		};
	function RB(t, i) {
		var n, e;
		e = t.touches ? ((n = t.cx), t.cy) : ((n = t[Te]), t.clientY);
		var s = TB(i);
		return s && 1 !== s && ((n /= s), (e /= s)), { timeStamp: t[Ne], x: n, y: e };
	}
	function FB(t, i, n) {
		(this._nF = t), (this[Ae] = n), (this._handler = i), (this._dragPoints = new XB()), this._jG();
	}
	FB[N] = {
		_jG: function() {
			var i, n;
			this.__kT ||
				((this[Oe] = function(t) {
					this._kT(t);
				}[Ie](this)),
				(i = this._nF),
				(n = this[Oe]),
				AB[It](function(t) {
					i[_e](t, n, !1);
				}),
				uF || WB._oXW || ((WB[Le] = !0), u[_e](Me, DB, !0), u.addEventListener(Se, PB, !0)));
		},
		_eP: function() {
			var i, n;
			this[Oe] &&
				((i = this._nF),
				(n = this.__kT),
				AB[It](function(t) {
					i[De](t, n, !1);
				}));
		},
		_kT: function(t) {
			var i = (t = this._gX(t))[wi];
			!1 === this[Pe](t, i) && this._jI(t, Ce + i);
		},
		_1D: function() {
			this.__longPressTimer && (clearTimeout(this.__longPressTimer), (this.__longPressTimer = null));
		},
		_5E: function(t) {
			this[Re] ||
				(this[Re] = function() {
					this._mIEvent && ((this.__oZancelClick = !0), this[Fe].button ? this._jI(this[Fe], Be) : this._jI(this[Fe], ke));
				}[Ie](this)),
				this._1D(),
				(this.__longPressTimer = setTimeout(this.__onLongPressFunction, DF.LONG_PRESS_INTERVAL));
		},
		_6T: function(t) {
			for (var i, n, e = 0, s = 0, h = t[Ge].length, r = 0; r < h; ) {
				var a = t.touches[r++],
					o = a[Te],
					f = a[We];
				if (2 == r) {
					var c = n[0] - o,
						u = n[1] - f;
					i = Math.sqrt(c * c + u * u);
				}
				(n = [o, f]), (e += o), (s += f);
			}
			(t.cx = e / h), (t.cy = s / h), (t[$e] = { x: t.cx, y: t.cy, clientX: t.cx, clientY: t.cy }), (t[Ct] = i);
		},
		_3A: function(t) {
			this[Xe].clear(), (this[He] = RB(t, this._nF));
		},
		_48: function(t, i) {
			switch (i) {
				case "touchstart":
					xF(t), this._6T(t), this._3A(t);
					var n = t[Ge][F];
					this[Fe] || ((this[Fe] = t), this._jK(t), (this[Ye] = !1), this._5E(t)),
						1 == n && (this.__mIMulTouchEvent = null),
						2 <= n && !this[Je] && (this.__mIMulTouchEvent = { cx: t.cx, cy: t.cy, distance: t[Ct] });
					break;
				case "touchmove":
					if ((mF(t), this._6T(t), 2 <= (n = t[Ge][F]) && this[Je])) {
						var e = this[Je][Ct];
						(t[Ze] = t[Ct] / e),
							this[Je].prevScale ? (t[Ue] = t._scale / this[Je][je]) : (t[Ue] = t._scale),
							(this[Je][je] = t._scale),
							this.__pinching || ((this[ze] = !0), this._jI(t, Ve));
					}
					this[Ke] || ((this.__dragging = !0), this._eT(t)), this._kV(t), this.__pinching && this._jI(t, Qe);
					break;
				case "touchend":
					mF(t),
						(n = t.touches[F]) && (this._6T(t), this._3A(t)),
						n <= 1 && (this[ze] && ((this.__pinching = !1), this._jI(t, qe)), (this[Je] = null)),
						0 == n &&
							(this.__dragging
								? (this._jM(t), (this[Ke] = !1))
								: t[Ne] - this[Fe].timeStamp < 0.8 * SB() && this._gZ(this._mIEvent),
							this._eR(t));
					break;
				case "touchcancel":
					(this.__dragging = !1), (this.__pinching = !1), (this[Je] = null);
			}
			return !1;
		},
		_oXI: function(t, i) {
			if (MB(t)) return this._48(t, i);
			if (ts == i)
				xF(t),
					CB(this),
					(this._oWH = RB(t, this._nF)),
					this[Fe] || ((this[Fe] = t), this._jK(t)),
					(this.__oZancelClick = !1),
					this._5E(t);
			else if (Se == i) CB(), this._eR(t);
			else if (is == i) {
				if (this[Ye]) return !0;
				if (this._9U()) return this._gZ(t), !0;
			} else if (ns == i) {
				if (this._9U()) return !0;
			} else {
				if (es == i) return this._jI(t, ss), this[Fe] && ((e = t).defaultPrevented || !1 === e.returnValue) && CB(this), !0;
				if (i == LB) {
					var n = t.wheelDelta;
					if ((n !== M ? (n /= 120) : (n = -t[hs]), !n)) return;
					return (t[rs] = n), this._jI(t, ve);
				}
			}
			var e;
			return !1;
		},
		_jI: function(t, i) {
			if (this._handler) {
				var n = this[as];
				if (((i = i || t[wi]), n instanceof Function)) return n(t, i);
				if (!(n[gn] instanceof Function && !1 === n[gn](i, t)))
					return (
						n[os] instanceof Function && n[os](i, t, this[Ae] || this._nF),
						n[i] instanceof Function ? n[i][m](n, t, this[Ae] || this._nF) : void 0
					);
			}
		},
		_gX: function(t) {
			return t;
		},
		_5F: function(t) {
			this.__dragging && (mF(t), (this[Ke] = !1), (t = this._gX(t)), this._jM(t), this._eR(t), this._jI(t, fs));
		},
		_3B: 4,
		_3D: function(t) {
			if (this[Fe]) {
				if ((mF(t), !this[Ke])) {
					var i = this[Fe][cs] - t[cs],
						n = this[Fe].screenY - t.screenY;
					if (i * i + n * n < this._3B) return;
					(this[Ke] = !0), this._eT(t);
				}
				this._kV(this._gX(t));
			}
		},
		_9U: function() {
			return DF.DELAY_CLICK;
		},
		_gZ: function(t) {
			if (!this.__oZancelClick) {
				var i = SB();
				this.__oZlickTimer
					? this[us] || (clearTimeout(this[_s]), (this[_s] = null), this._jI(t, ls), (this.__dblclicked = !0))
					: ((this[us] = !1),
					  (this[_s] = setTimeout(
							function(t, i) {
								(this.__oZlickTimer = null), this[us] || this._jI(t, ds);
							}[Ie](this, t, i),
							i
					  )));
			}
		},
		_jK: function(t) {
			t[bs] ? this._jI(t, vs) : this._jI(t, ys);
		},
		_eR: function(t) {
			this[Fe] && (this._1D(), t.button ? this._jI(t, gs) : this._jI(t, Es), (this[Fe] = null), (this[He] = null));
		},
		_6U: function(t) {
			var i = this[He];
			(this._oWH = RB(t, this._nF)), this._dragPoints.add(i, this._oWH, t);
		},
		_eT: function(t) {
			(this[Ye] = !0), this._1D(), this._mIEvent[bs] ? this._jI(this._mIEvent, xs) : this._jI(this._mIEvent, ms);
		},
		_kV: function(t) {
			this._6U(t), this[Fe][bs] ? this._jI(t, ps) : this._jI(t, ws);
		},
		_jM: function(t) {
			if (t[Ne] - this[He][Ne] < 100) {
				var i = this._dragPoints.getCurrentSpeed();
				i && ((t.vx = i.x), (t.vy = i.y));
			}
			this[Fe][bs] ? this._jI(t, Ts) : this._jI(t, Ns), this._dragPoints[Ot]();
		},
		_jO: function(t) {
			this[As]();
		},
		_oXK: function() {
			WB._oZurrentItem == this && delete WB._oZurrentItem,
				this._1D(),
				delete this._oWH,
				this[Fe] && (delete this[Fe][Os], delete this[Fe][Is], delete this._mIEvent);
		},
	};
	var BB,
		kB,
		GB,
		WB = UR(
			function(t) {
				(this._mF = t), FB[b](this, [t[Ls], null, t]);
			},
			{
				super: FB,
				_k7: function(t) {
					return this._mF[Ms](t);
				},
				_mG: function(t) {
					return this._mF.getUIByMouseEvent(t);
				},
				_gX: function(t) {
					return (
						(t instanceof MouseEvent || (u[xe] && t instanceof u[xe])) &&
							((t[Os] = this._k7[Ie](this, t)), (t[Is] = this._mG[Ie](this, t))),
						t
					);
				},
				_4O: function(i) {
					this._4P(function(t) {
						t.onElementRemoved instanceof Function && t[Ss](i, this._mF);
					});
				},
				_7L: function() {
					this._4P(function(t) {
						t.onClear instanceof Function && t.onClear(this._mF);
					});
				},
				_jO: function(t) {
					this._1M && this._2A(this._1M, t), this._$j && this._2A(this._$j, t), this[As]();
				},
				_mF: null,
				_1M: null,
				_$j: null,
				_7N: function(t) {
					if (this._1M == t) return !1;
					this._1M && this._1M[F] && this._2A(this._1M), (this._1M = t);
				},
				_7: function(t) {
					this._$j || (this._$j = []), this._$j[L](t);
				},
				_3: function(t) {
					this._$j && 0 != this._$j[F] && WR(this._$j, t);
				},
				_jI: function(t, i, n) {
					this._mF[i] instanceof Function && this._mF[i][m](this._mF, t, n),
						this._1M && this._hX(t, i, this._1M, n),
						this._$j && this._hX(t, i, this._$j, n);
				},
				_4P: function(t) {
					this._1M && RR(this._1M, t, this), this._$j && RR(this._$j, t, this);
				},
				_hX: function(t, i, n, e) {
					if (gF(n))
						for (var s = 0; s < n[F]; s++) {
							var h = n[s];
							this[Ds](t, i, h, e);
						}
					else this[Ds](t, i, n, e);
				},
				_oWQ: function(t, i, n, e) {
					if (!(n[gn] instanceof Function && !1 === n[gn](i, t, this._mF, e))) {
						n.onevent instanceof Function && n.onevent(i, t, this._mF, e);
						var s = n[i];
						s instanceof Function && s[m](n, t, this._mF, e);
					}
				},
				_2Q: function(t) {
					t[Ps] instanceof Function && t[Ps][m](t, this._mF);
				},
				_2A: function(t, i) {
					if (gF(t))
						for (var n = 0; n < t.length; n++) {
							var e = t[n];
							e && this._2Q(e, i);
						}
					else this._2Q(t, i);
				},
			}
		);
	function $B(t) {
		return (aF && t[Cs]) || (!aF && t[Rs]);
	}
	function XB() {
		this[Fs] = [];
	}
	function HB(t) {
		this._lK = t;
	}
	(XB.prototype = {
		limitCount: 10,
		points: null,
		add: function(t, i, n) {
			0 == this.points[F] && ((this._mIX = t.x), (this._mIY = t.y));
			var e = i[Ne] - t[Ne] || 1;
			n[Bs] = e;
			var s = i.x - t.x,
				h = i.y - t.y;
			(n.dx = s),
				(n.dy = h),
				(n[ks] = this._mIX),
				(n.startY = this[Gs]),
				(n[Ws] = i.x - this[$s]),
				(n.totalDeltaY = i.y - this[Gs]),
				this[Fs].splice(0, 0, { interval: e, dx: s, dy: h }),
				this[Fs][F] > this.limitCount && this[Fs].pop();
		},
		getCurrentSpeed: function() {
			if (!this[Fs][F]) return null;
			for (var t = 0, i = 0, n = 0, e = 0, s = this.points[F]; e < s; e++) {
				var h = this[Fs][e],
					r = h[Bs];
				if (150 < r) {
					t = 0;
					break;
				}
				if (((t += r), (i += h.dx), (n += h.dy), 300 < t)) break;
			}
			return 0 == t || (0 == i && 0 == n) ? null : { x: i / t, y: n / t };
		},
		clear: function() {
			this[Fs] = [];
		},
	}),
		(GB = nF ? ((BB = Xs), (kB = Hs), Ys) : eF ? ((BB = Js), (kB = Zs), Us) : ((kB = BB = js), zs));
	var YB = Math.PI,
		JB = Math.pow,
		ZB = Math.sin,
		UB = 1.70158,
		jB = {
			swing: function(t) {
				return -Math.cos(t * YB) / 2 + 0.5;
			},
			easeNone: function(t) {
				return t;
			},
			easeIn: function(t) {
				return t * t;
			},
			easeOut: function(t) {
				return (2 - t) * t;
			},
			easeBoth: function(t) {
				return (t *= 2) < 1 ? 0.5 * t * t : 0.5 * (1 - --t * (t - 2));
			},
			easeInStrong: function(t) {
				return t * t * t * t;
			},
			easeOutStrong: function(t) {
				return 1 - --t * t * t * t;
			},
			easeBothStrong: function(t) {
				return (t *= 2) < 1 ? 0.5 * t * t * t * t : 0.5 * (2 - (t -= 2) * t * t * t);
			},
			elasticIn: function(t) {
				return 0 === t || 1 === t ? t : -JB(2, 10 * --t) * ZB((2 * YB * (t - 0.075)) / 0.3);
			},
			elasticOut: function(t) {
				return 0 === t || 1 === t ? t : JB(2, -10 * t) * ZB((2 * YB * (t - 0.075)) / 0.3) + 1;
			},
			elasticBoth: function(t) {
				return 0 === t || 2 == (t *= 2)
					? t
					: t < 1
					? JB(2, 10 * --t) * ZB((2 * YB * (t - 0.1125)) / 0.45) * -0.5
					: JB(2, -10 * --t) * ZB((2 * YB * (t - 0.1125)) / 0.45) * 0.5 + 1;
			},
			backIn: function(t) {
				return 1 === t && (t -= 0.001), t * t * ((UB + 1) * t - UB);
			},
			backOut: function(t) {
				return --t * t * ((UB + 1) * t + UB) + 1;
			},
			backBoth: function(t) {
				return (t *= 2) < 1
					? t * t * ((1 + (UB *= 1.525)) * t - UB) * 0.5
					: 0.5 * ((t -= 2) * t * ((1 + (UB *= 1.525)) * t + UB) + 2);
			},
			bounceIn: function(t) {
				return 1 - jB[Vs](1 - t);
			},
			bounceOut: function(t) {
				var i = 7.5625;
				return t < 1 / 2.75
					? i * t * t
					: t < 2 / 2.75
					? i * (t -= 1.5 / 2.75) * t + 0.75
					: t < 2.5 / 2.75
					? i * (t -= 2.25 / 2.75) * t + 0.9375
					: i * (t -= 2.625 / 2.75) * t + 0.984375;
			},
			bounceBoth: function(t) {
				return t < 0.5 ? 0.5 * jB[Ks](2 * t) : 0.5 * jB.bounceOut(2 * t - 1) + 0.5;
			},
		};
	function zB(t, i, n, e) {
		(this[th] = t), (this[Ae] = i || this), (this._3O = e), n && 0 < n && (this._k9 = n);
	}
	(HB[N] = {
		_lK: null,
		_98: function() {
			this._oZallback instanceof Function && (this[Qs](), (this._oZallback = null));
		},
		_mI: function(t) {
			var e = Date.now();
			this._nN(),
				(this[Qs] = t),
				(this[qs] = requestAnimationFrame(
					function t() {
						var i = Date.now(),
							n = i - e;
						!n || (this._lK && !1 !== this._lK(n))
							? ((e = i), (this._requestID = requestAnimationFrame(t[Ie](this))))
							: this._nN();
					}[Ie](this)
				));
		},
		_7O: function() {},
		_nN: function() {
			if (!this[qs]) return !1;
			this._7O(), this._98(), u[ht](this[qs]), delete this[qs];
		},
		_fL: function() {
			return null != this._requestID;
		},
	}),
		(zB[N] = {
			_k9: 1e3,
			_3O: null,
			_fM: 0,
			_nN: function() {
				return (this._fM = 0), (this._dV = 0), YR(this, zB, ih);
			},
			_dV: 0,
			_lK: function(t) {
				if (((this._fM += t), this._fM >= this._k9)) return this[th][m](this[Ae], 1, (1 - this._dV) * this._k9, t, this._k9), !1;
				var i = this._fM / this._k9;
				if ((this._3O && (i = this._3O(i)), !1 === this[th][m](this[Ae], i, (i - this._dV) * this._k9, t, this._k9))) return !1;
				this._dV = i;
			},
		}),
		XR(zB, HB);
	function VB(t) {
		SF(t);
	}
	function KB(i, n, e, t, s) {
		(!1 !== e && !1 !== t) || (s = !1);
		try {
			var h,
				r = new XMLHttpRequest(),
				a = encodeURI(i);
			!1 !== s && ((h = 0 < a[v](nh) ? "&" : nh), (a += h + eh + Date.now())),
				r.open(sh, a),
				(r.onreadystatechange = function(t) {
					4 == r[hh] && (r.status && 200 != r[rh] ? (e || VB)(pt + i + ah) : n && n(r));
				}),
				r.send(t);
		} catch (t) {
			(e || VB)(pt + i + ah, t);
		}
	}
	var QB = {
		version: oh,
		extend: XR,
		doSuperConstructor: HR,
		doSuper: YR,
		createFunction: function(t, i) {
			return i.bind(t);
		},
		setClass: lF,
		appendClass: dF,
		removeClass: bF,
		forEach: RR,
		forEachReverse: BR,
		isNumber: vF,
		isString: yF,
		isBoolean: function(t) {
			return t !== M && (t instanceof Boolean || fh == typeof t);
		},
		isArray: gF,
		eventPreventDefault: EF,
		eventStopPropagation: xF,
		stopEvent: mF,
		callLater: function(t, i, n) {
			return (
				i instanceof Object ? (t = t[Ie](i)) : i && !n && (n = parseInt(i)),
				i && !n && (n = parseInt(i)),
				n ? setTimeout(t, n) : setTimeout(t)
			);
		},
		nextFrame: function(t, i) {
			return i && (t = t.bind(i)), u.requestAnimationFrame(t);
		},
		forEachChild: LR,
		forEachByDepthFirst: SR,
		forEachByDepthFirstReverse: DR,
		forEachByBreadthFirst: PR,
		randomInt: pF,
		randomBool: function() {
			return 0.5 <= Math[Z]();
		},
		randomColor: function(t) {
			if (t && 0 < t && t < 1) {
				var i = Math[J](16777215 * Math[Z]());
				return z + ((i >> 16) & 255) + V + ((i >> 8) & 255) + V + (255 & i) + V + t[K](2) + Q;
			}
			return NF(Math.floor(16777215 * Math[Z]()));
		},
		addEventListener: NB,
		getFirstElementChildByTagName: function(t, i) {
			i = i[Xn]();
			for (var n = qR ? t[ch] : t[uh]; n && (1 != n[_h] || (n.tagName && n.tagName[Xn]() != i)); ) n = qR ? n[lh] : n[dh];
			return n && 1 == n[_h] && n[bh] && n[bh][Xn]() == i ? n : null;
		},
	};
	(QB[vh] = uF),
		(QB[yh] = oF),
		(QB[zt] = HF),
		(QB[gh] = YF),
		(QB.Rect = JF),
		(QB.Size = $F),
		(QB[Eh] = BF),
		(QB[xh] = ZF),
		(QB.Event = nB),
		(QB.PropertyChangeEvent = eB),
		(QB[mh] = uB),
		(QB.Handler = oB),
		(QB.Dispatcher = cB),
		(QB.Position = UF),
		(QB[ph] = _B),
		(QB[wh] = bB),
		(QB[Th] = dB),
		(QB[Nh] = { onEvent: function(t) {}, beforeEvent: function(t) {} }),
		(QB.loadURL = KB),
		(QB[Ah] = function(n, e, s, t, i) {
			KB(
				n,
				function(t) {
					if (e) {
						var i = t[Oh];
						if (!i) return void (s || VB)(pt + n + Ih);
						e(i);
					}
				},
				s,
				t,
				i
			);
		}),
		(QB.loadJSON = function(e, s, h, t, i) {
			KB(
				e,
				function(t) {
					if (s) {
						var i,
							n = t.responseText;
						if (!n) return (h || VB)(pt + e + Lh), (i = new Error(pt + e + Lh)), s(n, i);
						try {
							n = JSON[Mh](n);
						} catch (t) {
							(h || VB)(t), (i = t);
						}
						s(n, i);
					}
				},
				h,
				t,
				i
			);
		}),
		(QB[Sh] = $B),
		(QB[Dh] = CF),
		(QB[Ph] = PF),
		(QB.DragSupport = FB),
		(QB.alert = function(t) {
			alert(t);
		}),
		(QB.prompt = function(t, i, n, e) {
			var s = prompt(t, i);
			return s != i && n ? n.call(e, s) : s;
		}),
		(QB.confirm = function(t, i, n) {
			var e = confirm(t);
			return e && i ? i[m](n) : e;
		}),
		(QB[Ch] = pB);
	var qB = {
		IMAGE_ADJUST_FLIP: Rh,
		IMAGE_ADJUST_MIRROR: Fh,
		SELECTION_TYPE_BORDER_RECT: Bh,
		SELECTION_TYPE_BORDER: kh,
		SELECTION_TYPE_SHADOW: Gh,
		NS_SVG: "http://www.w3.org/2000/svg",
		PROPERTY_TYPE_ACCESSOR: 0,
		PROPERTY_TYPE_STYLE: 1,
		PROPERTY_TYPE_CLIENT: 2,
		EDGE_TYPE_DEFAULT: null,
		EDGE_TYPE_ELBOW: Wh,
		EDGE_TYPE_ELBOW_HORIZONTAL: $h,
		EDGE_TYPE_ELBOW_VERTICAL: Xh,
		EDGE_TYPE_ORTHOGONAL: Hh,
		EDGE_TYPE_ORTHOGONAL_HORIZONTAL: Yh,
		EDGE_TYPE_ORTHOGONAL_VERTICAL: Jh,
		EDGE_TYPE_HORIZONTAL_VERTICAL: Zh,
		EDGE_TYPE_VERTICAL_HORIZONTAL: Uh,
		EDGE_TYPE_EXTEND_TOP: jh,
		EDGE_TYPE_EXTEND_LEFT: zh,
		EDGE_TYPE_EXTEND_BOTTOM: Vh,
		EDGE_TYPE_EXTEND_RIGHT: Kh,
		EDGE_TYPE_ZIGZAG: Qh,
		EDGE_CORNER_NONE: qh,
		EDGE_CORNER_ROUND: tr,
		EDGE_CORNER_BEVEL: ir,
		GROUP_TYPE_RECT: nr,
		GROUP_TYPE_CIRCLE: er,
		GROUP_TYPE_ELLIPSE: sr,
		SHAPE_CIRCLE: hr,
		SHAPE_RECT: nr,
		SHAPE_ROUNDRECT: rr,
		SHAPE_STAR: ar,
		SHAPE_TRIANGLE: or,
		SHAPE_HEXAGON: fr,
		SHAPE_PENTAGON: cr,
		SHAPE_TRAPEZIUM: ur,
		SHAPE_RHOMBUS: _r,
		SHAPE_PARALLELOGRAM: lr,
		SHAPE_HEART: dr,
		SHAPE_DIAMOND: br,
		SHAPE_CROSS: vr,
		SHAPE_ARROW_STANDARD: yr,
		SHAPE_ARROW_1: gr,
		SHAPE_ARROW_2: Er,
		SHAPE_ARROW_3: xr,
		SHAPE_ARROW_4: mr,
		SHAPE_ARROW_5: pr,
		SHAPE_ARROW_6: wr,
		SHAPE_ARROW_7: Tr,
		SHAPE_ARROW_8: Nr,
		SHAPE_ARROW_OPEN: Ar,
	};
	function XF(t, i, n, e, s, h, r, a) {
		return (
			!(r <= 0 || a <= 0 || n <= 0 || e <= 0) &&
			((a += h), (n += t), (e += i), ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
		);
	}
	function YF(t, i, n, e, s, h, r, a) {
		return t <= s && i <= h && s + r <= t + n && h + a <= i + e;
	}
	function tk(t, i, n) {
		return t instanceof Object && t.x ? nk(t, i, 0, 0) : ik(t, i, n, 0, 0);
	}
	function ik(t, i, n, e, s) {
		var h = Math.sin(n),
			r = Math.cos(n),
			a = t - e,
			o = i - s;
		return new BF((t = a * r - o * h + e), (i = a * h + o * r + s), n);
	}
	function nk(t, i, n, e) {
		(n = n || 0), (e = e || 0);
		var s = Math.sin(i),
			h = Math.cos(i),
			r = t.x - n,
			a = t.y - e;
		return (t.x = r * h - a * s + n), (t.y = r * s + a * h + e), t;
	}
	function ek(t, i, n) {
		return sk(t, i, n, 0, 0);
	}
	function sk(t, i, n, e, s) {
		var h = ik(t.x, t.y, i, e, s),
			r = ik(t.x + t[$t], t.y, i, e, s),
			a = ik(t.x + t[$t], t.y + t[Xt], i, e, s),
			o = ik(t.x, t.y + t.height, i, e, s);
		return n ? n[Ot]() : (n = new JF()), n[Or](h), n[Or](r), n.addPoint(a), n[Or](o), n;
	}
	(qB[Ir] = Lr),
		(qB[Mr] = tr),
		(qB[Sr] = Dr),
		(qB.LINE_JOIN_TYPE_BEVEL = ir),
		(qB[Pr] = tr),
		(qB[Cr] = Rr),
		(qB.EDGE_BUNDLE_TYPE_CURVE = Fr),
		(qB[Br] = kr),
		(qB.EDGE_BUNDLE_TYPE_ELBOW = Wh),
		(DF.SELECTION_TYPE = qB[Gr]),
		(DF.SELECTION_TOLERANCE = IB ? 8 : 3),
		(DF.SELECTION_BORDER = 2),
		(DF[Wr] = 7),
		(DF[$r] = NF(3422561023)),
		(DF[Xr] = qB[Gr]),
		(DF[Hr] = 10),
		(DF[Yr] = 10),
		(DF[Jr] = 10),
		(DF.IMAGE_MAX_SIZE = 200),
		(DF.LINE_HEIGHT = 1.2);
	var hk,
		rk = u[Zr] || 1;
	function ak(t, i) {
		var n = this[Ur] || 1;
		(this[Jn][$t] = t + jr), (this.style.height = i + jr), (this.width = t * n), (this[Xt] = i * n);
	}
	function ok(t, i, n) {
		var e = x[Hn](zr);
		if (((e.g = e.getContext(Vr)), !0 !== t && !n)) return t && i && ((e[$t] = t), (e[Xt] = i)), e;
		var s,
			h = e.g;
		return (
			(h[Ur] = e[Ur] =
				((s =
					h.webkitBackingStorePixelRatio ||
					h.mozBackingStorePixelRatio ||
					h[Kr] ||
					h.oBackingStorePixelRatio ||
					h.backingStorePixelRatio ||
					1),
				rk / s)),
			(e.setSize = ak),
			(h._mW = function() {
				this[zr].width = this[zr][$t];
			}),
			t && i && e.setSize(t, i),
			e
		);
	}
	function fk(t, i) {
		return (hk = hk || ok()), t && i && ((hk[$t] = t), (hk[Xt] = i)), hk.g;
	}
	rk < 1 && (rk = 1), (QB[Qr] = ok);
	var ck = hF && !uF;
	function uk(t, i, n) {
		return (n || DF.FONT_STYLE) + R + (i || DF[gt]) + Et + (t || DF[xt]);
	}
	function _k(t, i, n, e, s) {
		var h;
		try {
			h = t.getImageData(i, n, e, s);
		} catch (t) {}
		return h;
	}
	function lk(s, h) {
		var r = 1 / (h = h || s(1)),
			a = 0.5 * r,
			o = Math.min(1, h / 100);
		return function(t) {
			if (t <= 0) return 0;
			if (h <= t) return 1;
			for (var i = t * r, n = 0; n++ < 10; ) {
				var e = t - s(i);
				if (Math.abs(e) <= o) return i;
				i += e * a;
			}
			return i;
		};
	}
	function dk(t, i, n) {
		var e = 1 - t,
			s = e * e * i[0] + 2 * e * t * i[2] + t * t * i[4],
			h = e * e * i[1] + 2 * e * t * i[3] + t * t * i[5];
		if (n) {
			var r = (i[0] + i[4] - 2 * i[2]) * t + i[2] - i[0],
				a = (i[1] + i[5] - 2 * i[3]) * t + i[3] - i[1];
			return { x: s, y: h, rotate: Math[Rt](a, r) };
		}
		return { t: t, x: s, y: h };
	}
	function bk(t, i, n) {
		var e = t - 2 * i + n;
		return 0 != e ? (t - i) / e : -1;
	}
	function vk(t, i) {
		return Math.abs(t - i) < 1e-7;
	}
	function yk(t, i) {
		return vk(t[0], i[0]) && vk(t[1], i[1]);
	}
	function gk(t, i, n) {
		var e = 1 - t,
			s = i[0],
			h = i[2],
			r = i[4],
			a = i[6],
			o = s * e * e * e + 3 * h * t * e * e + 3 * r * t * t * e + a * t * t * t;
		if (n) var f = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
		var c = (s = i[1]) * e * e * e + 3 * (h = i[3]) * t * e * e + 3 * (r = i[5]) * t * t * e + (a = i[7]) * t * t * t;
		if (n) {
			var u = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
			return { x: o, y: c, rotate: Math[Rt](u, f) };
		}
		return { x: o, y: c };
	}
	function Ek(t, i, n) {
		return xk(i, n, t.cx, t.cy) <= t[qr] + Nk;
	}
	var xk = function(t, i, n, e) {
		var s = t - n,
			h = i - e;
		return s * s + h * h;
	};
	function mk(t, i, n, e) {
		return (n = n || CF(t.x, t.y, i.x, i.y)), new pk((t.x + i.x) / 2, (t.y + i.y) / 2, n / 2, t, i, null, e);
	}
	function pk(t, i, n, e, s, h, r) {
		(this.cx = t), (this.cy = i), (this.r = n), (this[qr] = n * n), (this.p1 = e), (this.p2 = s), (this.p3 = h), (this._otherPoint = r);
	}
	function wk(t, i, n, e) {
		(this.cx = t), (this.cy = i), (this[$t] = n), (this.height = e);
	}
	function Tk(t) {
		var i = t[0],
			n = t[1],
			e = t[2];
		return (function t(i, n, e, s, h) {
			for (var r, a, o, f = i.length, c = h._squareR, u = 0; u < f; u++)
				if ((r = i[u]) != n && r != e && r != s) {
					var _ = xk(h.cx, h.cy, r.x, r.y);
					c < _ - Nk && ((c = _), (a = r));
				}
			if (!a) return h;
			var l = pk[ta](a, n, e),
				d = pk[ta](a, n, s),
				b = pk[ta](a, s, e);
			return (
				Ek(l, s.x, s.y) && (o = l),
				Ek(d, e.x, e.y) && (!o || o.r > d.r) && (o = d),
				Ek(b, n.x, n.y) && (!o || o.r > b.r) && (o = b),
				t(i, (n = o.p1), (e = o.p2), (s = o.p3 || o[ia]), o)
			);
		})(t, i, n, e, pk[ta](i, n, e));
	}
	(pk[N] = {
		equals: function(t) {
			return this.cx == t.cx && this.cy == t.cy && this.r == t.r;
		},
	}),
		(pk[ta] = function(t, i, n) {
			if (!n) return mk(t, i);
			var e,
				s = xk(t.x, t.y, i.x, i.y),
				h = xk(t.x, t.y, n.x, n.y),
				r = xk(n.x, n.y, i.x, i.y);
			if (h + r <= s + Nk) return mk(t, i, 0, n);
			if (s + r <= h + Nk) return mk(t, n, 0, i);
			if (s + h <= r + Nk) return mk(i, n, 0, t);
			Math.abs(n.y - i.y) < 1e-4 && ((e = t), (t = i), (i = e)), (e = n.x * (t.y - i.y) + t.x * (i.y - n.y) + i.x * (-t.y + n.y));
			var a = (n.x * n.x * (t.y - i.y) + (t.x * t.x + (t.y - i.y) * (t.y - n.y)) * (i.y - n.y) + i.x * i.x * (-t.y + n.y)) / (2 * e),
				o = (i.y + n.y) / 2 - ((n.x - i.x) / (n.y - i.y)) * (a - (i.x + n.x) / 2);
			return new pk(a, o, CF(a, o, t.x, t.y), t, i, n);
		});
	var Nk = 0.01;
	function Ak(t) {
		return (t = Lk(t)) > Math.PI / 2 && t < (3 * Math.PI) / 2;
	}
	function Ok(t, i, n, e) {
		var s = function(t, i) {
			if (!this._lL || this._hY.length < 2) {
				if (this._hY.length) {
					var n = !1 !== i ? this._hY[0][na] : this._hY[this._hY.length - 1].lastPoint;
					return t && (n.x += t), n;
				}
				return null;
			}
			var e = this._hY;
			!1 === i && (t += this._lL);
			var s,
				h = e[0];
			if (t <= 0) return G$(h[Fs][0], h[Fs][1], e[1].points[0], e[1][Fs][1], t, 0);
			if (t >= this._lL) {
				var r,
					a,
					o = (h = e[e.length - 1]).points,
					f = o[(l = o.length) - 2],
					c = o[l - 1];
				return (
					(a = 4 <= l ? ((r = o[l - 4]), o[l - 3]) : ((r = (b = (h = e[e[F] - 2])[ea]).x), b.y)),
					G$(f, c, f + f - r, c + c - a, t - this._lL, 0)
				);
			}
			for (var u = 0, _ = 1, l = e.length; _ < l; _++)
				if ((s = e[_])._lL) {
					if (!(u + s._lL < t)) {
						var d,
							b = h[ea];
						if (s.type == aG) {
							var v = s[Fs];
							d = Ik(t - u, s, b.x, b.y, v[0], v[1], v[2], v[3], s._r);
						} else {
							if (!s._lf) return G$(b.x, b.y, s[Fs][0], s[Fs][1], t - u, 0);
							var y = lk(s._lf, s._lL)(t - u);
							(v = s.points),
								((d = s.type == rG && 6 == v[F] ? gk(y, [b.x, b.y][B](v), !0) : dk(y, [b.x, b.y].concat(v), !0)).t = y);
						}
						return d;
					}
					(u += s._lL), (h = s);
				} else h = s;
		}[m](this, t, n);
		return (
			s &&
				i &&
				(s[Mt] ? (e && Ak(s[Mt]) && (i = -i), (s.x -= i * Math.sin(s[Mt] || 0)), (s.y += i * Math.cos(s[Mt] || 0))) : (s.y += i)),
			s
		);
	}
	function Ik(t, i, n, e, s, h, r, a) {
		if (t <= i._l1) return G$(n, e, s, h, t, t);
		if (t >= i._lL) return (t -= i._lL), G$(i[sa], i._p2y, r, a, t, t);
		if (((t -= i._l1), i._o)) {
			var o = t / i._r;
			i[ha] && (o = -o);
			var f = ik(i[ra], i[aa], o, i._o.x, i._o.y);
			return (f[Mt] += i[oa] || 0), (f[Mt] += Math.PI), f;
		}
		return G$(i._p1x, i._p1y, i._p2x, i[fa], t, t);
	}
	function GF(t, i, n) {
		var e, s, h;
		0 == t._oW
			? ((e = -1), (h = 0), (s = i))
			: 0 == t._oZ
			? ((e = 0), (h = 1), (s = n))
			: ((e = -1 / t._oW), (s = (t._oW - e) * i + t._oX), (h = 1));
		var r = new kF();
		return (r._oW = e), (r._oX = s), (r._oZ = h), (r._oP = i), (r._oR = n), r;
	}
	function Lk(t) {
		return (t %= RF) < 0 && (t += RF), t;
	}
	function Mk(t, i, n, e) {
		return Math[Rt](e - i, n - t);
	}
	var Sk = {
			_oXH: function(t, i, n, e, s, h) {
				if ((yF(t) && (t = UF.fromString(t)), !t)) return { x: 0, y: 0 };
				var r = 0,
					a = 0,
					o = i._lL;
				if (((n = n || 0), t.x === M)) {
					var f = t.horizontalPosition,
						c = t[ii],
						u = !0;
					switch (f) {
						case zF:
							u = !1;
							break;
						case "c":
							r += o / 2;
					}
					switch (c) {
						case VF:
							a -= n / 2;
							break;
						case KF:
							a += n / 2;
					}
				} else (r = t.x), (a = t.y), 0 < Math.abs(r) && Math.abs(r) < 1 && (r *= o);
				s && null != e && ((a += e.y), Math.abs(e.x) < 1 ? (r += e.x * o) : (r += e.x));
				var _ = Ok[m](i, r, a, u, h);
				return _ ? (s || null == e || _[ca](e), _) : { x: 0, y: 0 };
			},
			_nP: function(t, i, n) {
				var e = i[wi],
					s = i.points;
				switch (e) {
					case aG:
						t[ua](s[0], s[1], s[2], s[3], i._r);
						break;
					case eG:
						t[_a](s[0], s[1]);
						break;
					case sG:
						t[la](s[0], s[1]);
						break;
					case hG:
						t.quadraticCurveTo(s[0], s[1], s[2], s[3]);
						break;
					case rG:
						t[da](s[0], s[1], s[2], s[3], s[4], s[5]);
						break;
					case oG:
						t.closePath();
				}
			},
			_65: function(t, i, n, e) {
				var s = i[wi];
				if (s != eG && s != oG) {
					var h = n[ea],
						r = i.points;
					switch ((n.type == eG && t.add(h.x, h.y), s)) {
						case aG:
							!(function(t, i, n, e, s, h, r, a) {
								var o = CF(i, n, e, s),
									f = CF(e, s, h, r);
								if (!o || !f) return (t._d = 0), (t._r = 0), (t._l1 = o), (t._l2 = f), (t._lL = 0);
								var c = Mk(e, s, i, n),
									u = Mk(e, s, h, r),
									_ = (t[oa] = c) - (t[ba] = u);
								(_ = Lk(_)) > Math.PI && ((_ = 2 * Math.PI - _), (t[ha] = !0));
								var l = Math.PI - _,
									d = Math.tan(_ / 2),
									b = a / d,
									v = Math.min(o, f);
								v < b && (a = d * (b = v));
								var y,
									g = e + Math.cos(c) * b,
									E = s + Math.sin(c) * b,
									x = e + Math.cos(u) * b,
									m = s + Math.sin(u) * b,
									p = new kF(i, n, e, s),
									w = new kF(e, s, h, r),
									T = GF(p, g, E),
									N = GF(w, x, m),
									A = T._3N(N),
									O = Math[Rt](E - A.y, g - A.x),
									I = Math[Rt](m - A.y, x - A.x);
								y = t[ha] ? I : O;
								for (var L, M = 0; M < 4; ) {
									var S, D;
									if (
										Lk(M * FF - y) <= l &&
										(L ? L++ : (L = 1),
										(D =
											0 == M
												? ((S = A.x + a), A.y)
												: 1 == M
												? ((S = A.x), A.y + a)
												: 2 == M
												? ((S = A.x - a), A.y)
												: ((S = A.x), A.y - a)),
										(t[va + L] = { x: S, y: D }),
										2 == L)
									)
										break;
									M++;
								}
								(t[ra] = g),
									(t._p1y = E),
									(t._p2x = x),
									(t[fa] = m),
									(t._o = A),
									(t._d = b),
									(t._r = a),
									(t._l1 = o - b),
									(t._l2 = f - b),
									(t._lL = t._l1 + l * a);
							})(i, h.x, h.y, r[0], r[1], r[2], r[3], r[4]),
								t.add(r[0], r[1]),
								t.add(i[ra], i._p1y),
								t.add(i._p2x, i[fa]),
								i.$boundaryPoint1 && t.add(i[ya].x, i[ya].y),
								i[ga] && t.add(i[ga].x, i[ga].y);
							break;
						case sG:
							t.add(r[0], r[1]);
							break;
						case hG:
							!(function(t, i) {
								i.add(t[4], t[5]);
								var n = bk(t[0], t[2], t[4]);
								if (0 < n && n < 1) {
									var e = dk(n, t);
									i.add(e.x, e.y);
								}
								var s = bk(t[1], t[3], t[5]);
								0 < s && s < 1 && ((e = dk(s, t)), i.add(e.x, e.y));
							})([h.x, h.y][B](r), t);
							break;
						case rG:
							!(function(t, i) {
								i.add(t[6], t[7]);
								var n = function(t, i, n, e, s, h, r, a) {
									for (var o, f, c, u, _, l, d, b, v = [], y = 0; y < 2; ++y)
										if (
											((c =
												0 === y
													? ((f = 6 * t - 12 * n + 6 * s), (o = -3 * t + 9 * n - 9 * s + 3 * r), 3 * n - 3 * t)
													: ((f = 6 * i - 12 * e + 6 * h), (o = -3 * i + 9 * e - 9 * h + 3 * a), 3 * e - 3 * i)),
											Math.abs(o) < 1e-12)
										) {
											if (Math.abs(f) < 1e-12) continue;
											0 < (u = -c / f) && u < 1 && v.push(u);
										} else
											(d = f * f - 4 * c * o),
												(b = Math[St](d)),
												d < 0 ||
													(0 < (_ = (-f + b) / (2 * o)) && _ < 1 && v[L](_),
													0 < (l = (-f - b) / (2 * o)) && l < 1 && v[L](l));
									return v;
								}[b](this, t);
								if (n)
									for (var e = 0; e < n.length; e++) {
										var s = n[e];
										if (!(s < 0 || 1 < s)) {
											var h = gk(s, t);
											i.add(h.x, h.y);
										}
									}
							})([h.x, h.y][B](r), t);
							break;
						case oG:
							e && t.add(e[Fs][0], e[Fs][1]);
					}
				}
			},
			_67: function(t, i, n) {
				var e = t[wi];
				if (e == eG) return 0;
				var s,
					h,
					r,
					a,
					o,
					f,
					c,
					u,
					_,
					l,
					d,
					b,
					v,
					y,
					g,
					E,
					x,
					m,
					p,
					w,
					T,
					N,
					A,
					O,
					I,
					L,
					M = i.lastPoint,
					S = t[Fs];
				switch ((e == rG && 4 == S[F] && (e = hG), e)) {
					case sG:
						return CF(S[0], S[1], M.x, M.y);
					case aG:
						return t._lL;
					case hG:
						var D = (function(t) {
							if (yk([t[0], t[1]], [t[2], t[3]])) {
								var i = t[0],
									n = t[1],
									e = t[4],
									s = t[5],
									h = Math.sqrt(xk(i, n, e, s));
								return function(t) {
									return h * t;
								};
							}
							if (yk([t[0], t[1]], [t[4], t[5]]) || yk([t[2], t[3]], [t[4], t[5]]))
								return (
									(i = t[0]),
									(n = t[1]),
									(e = t[2]),
									(s = t[3]),
									(h = Math[St](xk(i, n, e, s))),
									function(t) {
										return h * t;
									}
								);
							var r = t[0],
								a = t[2],
								o = t[4],
								f = r - 2 * a + o,
								c = 2 * a - 2 * r,
								u = (r = t[1]) - 2 * (a = t[3]) + (o = t[5]),
								_ = 2 * a - 2 * r,
								l = 4 * (f * f + u * u),
								d = 4 * (f * c + u * _),
								b = c * c + _ * _;
							if ((h = 4 * l * b - d * d) < 1e-5 && -1e-5 < h) {
								var v = CF(t[0], t[1], t[2], t[3]),
									y = CF(t[2], t[3], t[4], t[5]);
								return function(t) {
									return (2 * v + (y - v) * t) * t;
								};
							}
							var g,
								E = 1 / h,
								x = 0.125 * Math.pow(l, -1.5),
								m = 2 * Math[St](l),
								p =
									(h * ((g = d / Math.sqrt(h)), Math.log(g + Math.sqrt(g * g + 1))) +
										Math.sqrt(l) * (2 * d) * Math[St](b)) *
									x;
							return function(t) {
								var i = d + 2 * t * l,
									n = i / Math[St](h),
									e = i * i * E;
								return (h * Math.log(n + Math[St](1 + e)) + m * i * Math[St](b + t * d + t * t * l)) * x - p;
							};
						})([M.x, M.y][B](S));
						return (t._lf = D)(1);
					case rG:
						return (
							(s = [M.x, M.y][B](S)),
							(r = C(s[0], s[2], s[4], s[6])),
							(a = C(s[1], s[3], s[5], s[7])),
							(o = 1 / (h = h || 100)),
							(D = function(t) {
								if (!t) return 0;
								for (var i, n = 0, e = 0; ; ) {
									if (t <= (i = n + o)) return e + R(n, i - n);
									(e += R(n, o)), (n = i);
								}
							}),
							(t._lf = D)(1) ||
								((f = [M.x, M.y][B](S)),
								(c = f[0]),
								(u = f[1]),
								(_ = f[2]),
								(l = f[3]),
								(d = f[4]),
								(b = f[5]),
								(v = f[6]),
								(y = f[7]),
								(T = 3 * (3 * (x = _ - 0) - (g = c - 0) - 3 * (p = d - 0) + (v - 0))),
								(N = 6 * (g - 2 * x + p)),
								(A = 3 * (x - g)),
								(O = 3 * (3 * (m = l - 0) - (E = u - 0) - 3 * (w = b - 0) + (y - 0))),
								(I = 6 * (E - 2 * m + w)),
								(L = 3 * (m - E)),
								(P(0) + 4 * P(0.5) + P(1)) / 6)
						);
					case oG:
						if (M && n) return (t[Fs] = n.points), CF(n[Fs][0], n[Fs][1], M.x, M.y);
				}
				function P(t) {
					var i = T * t * t + N * t + A,
						n = O * t * t + I * t + L;
					return Math[St](i * i + n * n);
				}
				function C(t, i, n, e) {
					var s = 3 * i - t - 3 * n + e,
						h = 2 * t - 4 * i + 2 * n,
						r = i - t;
					return function(t, i) {
						return 3 * (s * t * t + h * t + r);
					};
				}
				function R(t, i) {
					var n = r(t),
						e = a(t);
					return Math[St](n * n + e * e) * i;
				}
				return 0;
			},
		},
		Dk = /^data:image\/(\w+);base64,/i,
		Pk = /^gif/i,
		Ck = /^svg/i,
		Rk = 10,
		Fk = 11,
		Bk = 12,
		kk = 20,
		Gk = 30;
	function Wk(t, i, n, e, s) {
		if (i && n) {
			(t[Ea] = 0.5), (t.strokeStyle = xa), t[ma](0, 0, i, n), e && ((t[pa] = e), t[wa](0, 0, i, n));
			var h = Math.min(i / 50, n / 38);
			t.save(),
				(t.globalAlpha = 0.6),
				t[Ta](i / 2, n / 2),
				t[Na](h, h),
				t[Ta](-20, -14),
				t.beginPath(),
				t[nr](0, 0, 40, 28),
				t.clip(),
				(t[pa] = Aa),
				t.fill(),
				(t.globalAlpha = 1),
				t[_a](0, 21),
				t[la](12, 12),
				t.lineTo(26, 28),
				t[_a](18, 18),
				t[la](28, 8),
				t.lineTo(40, 18),
				(t[Ea] = 2),
				(t[Oa] = Ia),
				t[La](),
				s &&
					(t.beginPath(),
					t[_a](26, -4),
					t[la](17, 11),
					t.lineTo(23, 17),
					t[la](14, 32),
					(t[Ea] = 5),
					(t.strokeStyle = e || Ma),
					t.stroke()),
				t[Sa]();
		}
	}
	function $k(t) {
		var i = Dk[Da](t);
		if (i) return i[1];
		var n = t.lastIndexOf(it);
		return 0 <= n && n < t[F] - 1 ? t[Kn](n + 1) : void 0;
	}
	function Xk(t, i, n) {
		if (
			((this._nA = (function(t) {
				if (!t) return null;
				if (t instanceof cG) return Gk;
				if (t[Ba] instanceof Function) return kk;
				if (yF(t)) {
					var i = $k(t);
					if (i) {
						if (!qR && Pk[A](i)) return Bk;
						if (Ck.test(i)) return Fk;
					}
					return Rk;
				}
			})(t)),
			!this._nA)
		)
			throw new Error("the image format is not supported", t);
		(this._n8 = t), (this[ka] = i), (this._9Y = n), (this[$t] = i || DF[Pa]), (this[Xt] = n || DF[Ca]), (this._l1 = {});
	}
	(DF[Pa] = 50),
		(DF[Ca] = 30),
		(DF[Ra] = {
			draw: function(t, i) {
				Wk(t, i[$t], i[Xt], i.renderColor);
			},
		}),
		(DF.IMAGE_INVALID = {
			draw: function(t, i) {
				Wk(t, i[$t], i[Xt], i[Fa], !0);
			},
		}),
		(DF.MAX_CACHE_PIXELS = 1e6),
		(Xk.prototype = {
			_kW: 0,
			_6W: !0,
			_mA: null,
			_kX: null,
			_n8: null,
			_nA: null,
			_oXL: M,
			_9Y: M,
			_6Y: function() {
				return 1 == this._kW;
			},
			getBounds: function(t) {
				return this._nA == Gk ? this._n8.getBounds(t) : (this._6W && this._h4(), this);
			},
			validate: function() {
				this._6W && this._h4();
			},
			_h4: function() {
				if (((this._6W = !1), this._nA == Gk)) return this._n8.validate(), void this[Ga](this._n8.bounds);
				if (this._nA != kk) {
					if (1 != this._kW)
						try {
							this._eV();
						} catch (t) {
							(this._kW = 3), QB[et](t);
						}
				} else this._9Z();
			},
			_5H: function() {
				this._eZ(), this._dispatcher[Ot](), delete this[Wa];
			},
			_jQ: function(t) {
				this._mA.parentNode && this._mA.parentNode[Cn](this._mA),
					(this._kW = 3),
					QB[et]($a + this._n8),
					(this[Xa] = null),
					(this._kX = null),
					(this._mA = null),
					!1 !== t && this._5H();
			},
			_eV: function() {
				var t,
					n,
					i,
					e,
					s,
					h,
					r,
					a,
					o,
					f,
					c,
					u,
					_,
					l,
					d,
					b = this._n8;
				if (((this._kW = 1), (this._dispatcher = new cB()), this._nA != Bk))
					this._mA || ((this._mA = x[Hn](Ha)), qR && ((this._mA[Jn][Ya] = Ja), x[Za][ce](this._mA))),
						qR
							? ((this._mA[Ua] = function(t) {
									setTimeout(this._8O[Ie](this), 100);
							  }[Ie](this)),
							  (this._mA[ja] = this._jQ.bind(this)))
							: ((this._mA[Ua] = this._8O[Ie](this)), (this._mA.onerror = this._8O[Ie](this))),
						(this._mA.src = b);
				else {
					for (var v in SG) this[v] = SG[v];
					(t = this._n8),
						(i = (n = this)._dZ),
						(e = this._jQ),
						(s = this._fQ),
						(l = {
							hdr: y(function(t) {
								(h = t), ((u = u || ok()).width = h.width), (u[Xt] = h[Xt]), (n[$t] = h.width), (n[Xt] = h[Xt]);
							}),
							gce: y(function(t) {
								E(),
									(o = f),
									(c = f = a = r = null),
									(r = t.transparencyGiven ? t[za] : null),
									(a = 10 * t.delayTime),
									(f = t[Va]);
							}),
							com: y(g),
							app: { NETSCAPE: y(g) },
							img: y(function(t) {
								c = c || u.getContext(Vr);
								var n = t.lctFlag ? t.lct : h.gct,
									e = c.getImageData(t.leftPos, t[Ka], t[$t], t[Xt]);
								t[Qa][It](function(t, i) {
									r !== t
										? ((e[Qi][4 * i + 0] = n[t][0]),
										  (e.data[4 * i + 1] = n[t][1]),
										  (e[Qi][4 * i + 2] = n[t][2]),
										  (e[Qi][4 * i + 3] = 255))
										: (2 !== o && 3 !== o) || (e[Qi][4 * i + 3] = 0);
								}),
									c[qa](e, t[to], t.topPos);
							}),
							eof: function(t) {
								E(), i[m](n);
							},
						}),
						(d = new XMLHttpRequest()),
						qR || d[io]("text/plain; charset=x-user-defined"),
						(d[Ua] = function(t) {
							_ = new DG(d[no]);
							try {
								PG(_, l);
							} catch (t) {
								e[m](n, Mh);
							}
						}),
						(d[ja] = function() {
							e[m](n, eo);
						}),
						d.open(sh, t, !0),
						d.send();
				}
				function y(i) {
					return function(t) {
						i(t);
					};
				}
				function g() {}
				function E() {
					if (c) {
						var t = c.getImageData(0, 0, h[$t], h.height),
							i = { data: t, _pixels: dG(t[Qi], h[$t], h.height), delay: a };
						s[m](n, i);
					}
				}
			},
			_jS: !0,
			_8O: function() {
				var t = this._mA[$t],
					i = this._mA[Xt];
				if (t && i) {
					if (
						(this._mA.parentNode && this._mA.parentNode[Cn](this._mA),
						(this._kW = 2),
						(this.width = t),
						(this[Xt] = i),
						qR && this._nA == Fk)
					)
						(this[Xa] = null), (this._jS = !1);
					else if (this._nA == Fk || ((s = $k((s = this._mA.src))), /^png/i[A](s) || /^gif/i.test(s))) {
						var n,
							e = ok();
						(e[$t] = t), (e[Xt] = i), e.g.drawImage(this._mA, 0, 0, t, i);
						try {
							n = e.g[so](0, 0, e[$t], e[Xt])[Qi];
						} catch (t) {
							(this._jS = !1), QB[et](t);
						}
						n &&
							(function(t) {
								for (var i = !1, n = 3, e = t.length; n < e; n += 4)
									if (t[n] < 255) {
										i = !0;
										break;
									}
								return i;
							})((e.g, n)) &&
							((this._kX = e),
							(this[Xa] = (function() {
								var t = e[$t],
									i = e[Xt],
									n = _k(e.g, 0, 0, t, i);
								if (n) return dG(n.data, t, i);
							})()));
					}
					var s;
					this._5H();
				} else this._jQ();
			},
			_9Z: function() {
				var t = this._n8;
				if (t[Ba] instanceof Function) {
					if (!1 === t[ho] && t[$t] && t.height) return (this[$t] = t.width), void (this.height = t[Xt]);
					var i = t[$t] || DF[ro],
						n = t[Xt] || DF[ro],
						e = this._eX();
					(e[$t] = i), (e[Xt] = n);
					var s = e.g;
					t.draw(s);
					var h = _k(s, 0, 0, i, n);
					if (h) {
						var r = dG(h[Qi], i, n);
						(this.x = r._x),
							(this.y = r._y),
							(this[$t] = r[ao]),
							(this[Xt] = r[oo]),
							(e.width = this[$t]),
							(e.height = this[Xt]),
							s[qa](h, -this.x, -this.y),
							(this._pixels = r);
					}
				} else this._jQ(!1);
			},
			_eX: function() {
				return this._kX || (this._kX = ok());
			},
			draw: function(t, i, n, e, s, h) {
				if (this.width && this[Xt]) {
					(i = i || 1), (e = e || 1), (s = s || 1);
					var r = this[$t] * e,
						a = this[Xt] * s;
					if (
						(h &&
							n[fo] &&
							((t[fo] = n[fo]),
							(t.shadowBlur = (n[co] || 0) * i),
							(t.shadowOffsetX = (n[uo] || 0) * i),
							(t[_o] = (n.shadowOffsetY || 0) * i)),
						1 != this._kW)
					)
						if (3 != this._kW) {
							if (this._nA == Gk) return t[Na](e, s), void this._n8.draw(t, i, n);
							var o = this._h5(i, e, s);
							if (o)
								return (
									(this.x || this.y) && t[Ta](this.x * e, this.y * s),
									t[Na](e / o[Na], s / o[Na]),
									void o._nP(t, n[Fa], n[lo])
								);
							this._kZ(t, i, e, s, this[$t] * e, this[Xt] * s, n);
						} else DF[bo] && DF[bo].draw(t, { src: this._n8, width: r, height: a, renderColor: n.renderColor });
					else DF[Ra] && DF[Ra].draw(t, { src: this._n8, width: r, height: a, renderColor: n[Fa] });
				}
			},
			_kZ: function(t, i, n, e, s, h, r) {
				if (this._nA == kk) return 1 != n && 1 != e && t.scale(n, e), void this._n8[Ba](t, r);
				if (this._mA) {
					if (!sF) return void t[vo](this._mA, 0, 0, s, h);
					(n = (i * s) / this[$t]), (e = (i * h) / this.height), t[Na](1 / n, 1 / e), t[vo](this._mA, 0, 0, s * n, h * e);
				}
			},
			_l1: null,
			_h5: function(t, i, n) {
				if (this._nA == kk && !1 === this._n8[ho]) return null;
				if (this._nA == Rk || (t *= Math.max(i, n)) <= 1)
					return this[yo] || (this[yo] = this._h6(this._kX || this._mA, 1, this._jS)), this[yo];
				var e = this._l1[go] || 0;
				if ((t = Math[T](t)) <= e) {
					for (var s = t, h = this._l1[s]; !h && ++s <= e; ) h = this._l1[s];
					if (h) return h;
				}
				t % 2 && t++;
				var r = this[$t] * t,
					a = this.height * t;
				if (r * a > DF[Eo]) return null;
				var o = ok(r, a);
				return (this.x || this.y) && o.g[Ta](-this.x * t, -this.y * t), this._kZ(o.g, 1, t, t, r, a), this._h6(o, t);
			},
			_h6: function(t, i) {
				var n = new vG(t, i);
				return (this._l1[i] = n), (this._l1[go] = i), n;
			},
			hitTest: function(t, i, n) {
				return this._nA == Gk
					? this._n8[xo][b](this._n8, arguments)
					: !(this[Xa] || (this._mA && this._mA[Xa])) || (this._pixels || this._mA[Xa])._jT(t, i, n);
			},
			_eZ: function() {
				this[Wa] && this._dispatcher[g](new nB(this, mo, po, this._mA));
			},
			_oXN: function(t, i) {
				this[Wa] && this[Wa][Vi](t, i);
			},
			_6Z: function(t, i) {
				this[Wa] && this[Wa][wo](t, i);
			},
			_d2: function(t) {
				(this._l1 = {}), (t || 1e5 < this.width * this[Xt]) && ((this._mA = null), (this._kX = null));
			},
		}),
		XR(Xk, JF);
	var Hk = {};
	function Yk(t, i, n, e) {
		if (i) return (Hk[t] = new Xk(i, n, e)), t;
		delete Hk[t];
	}
	function Jk(t) {
		if (t._mA) return t._mA;
		if (!yF(t) && !t[To]) return (t._mA = new Xk(t));
		var i = t[To] || t;
		return i in Hk ? Hk[i] : (Hk[i] = new Xk(t));
	}
	function Zk(t) {
		return t in Hk;
	}
	function Uk(t, i, n) {
		n = n || {};
		var e = t[No](n[Ea]);
		if (!e.width || !e[Xt]) return !1;
		var s = i[Ao](Vr),
			h = i[Ur] || 1,
			r = n[Oo] || Io,
			a = /full/i[A](r),
			o = /uniform/i[A](r),
			f = 1,
			c = 1;
		if (a) {
			var u,
				_,
				l,
				d,
				b = i[$t],
				v = i[Xt],
				y = n.padding,
				g = 0,
				E = 0;
			y &&
				(vF(y) ? (u = _ = l = d = y) : ((u = y.top || 0), (_ = y[Bt] || 0), (l = y.left || 0), (d = y[kt] || 0)),
				(b -= l + d),
				(v -= u + _),
				(g += l),
				(E += u)),
				(f = b / e[$t]),
				(c = v / e.height),
				o && (c < f ? ((g += (b - c * e[$t]) / 2), (f = c)) : f < c && ((E += (v - f * e[Xt]) / 2), (c = f))),
				(g || E) && s[Ta](g, E);
		}
		s[Ta](-e.x * f, -e.y * c), t[Ba](s, h, n, f, c, !0);
	}
	function jk(t, i, n, e, s, h) {
		(this.type = t), (this[Co] = i), (this[Ro] = n), (this[Fo] = e || 0), (this.tx = s || 0), (this.ty = h || 0);
	}
	(QB[vo] = function(t, i, n) {
		var e = Jk(t);
		if (!e) return QB.error(Lo + t), !1;
		e[Mo](),
			(e._nA != Bk && !e._6Y()) ||
				e[So](function(t) {
					t[pi] && ((this.width = this[$t]), Uk(t.source, this, n));
				}, i),
			Uk(e, i, n);
	}),
		(QB[Do] = Yk),
		(QB.hasImage = Zk),
		(QB[Po] = function() {
			var t = [];
			for (var i in Hk) t[L](i);
			return t;
		}),
		(qB.GRADIENT_TYPE_RADIAL = si),
		(qB.GRADIENT_TYPE_LINEAR = ei),
		(jk[N] = {
			type: null,
			colors: null,
			positions: null,
			angle: null,
			tx: 0,
			ty: 0,
			position: UF.CENTER_MIDDLE,
			isEmpty: function() {
				return null == this[Co] || 0 == this.colors[F];
			},
			_7P: function() {
				var t = this[Co][F];
				if (1 == t) return [0];
				for (var i = [], n = 1 / (t - 1), e = 0; e < t; e++) i[L](n * e);
				return this[Ro] || (this[Ro] = i), i;
			},
			generatorGradient: function(t) {
				if (null == this[Co] || 0 == this.colors.length) return null;
				var i,
					n = fk();
				if (this[wi] == qB.GRADIENT_TYPE_LINEAR) {
					var e,
						s = this.angle;
					if ((s > Math.PI && (s -= Math.PI), s <= Math.PI / 2)) {
						var h = Math[Rt](t.height, t[$t]),
							r = Math.sqrt(t[$t] * t.width + t[Xt] * t[Xt]),
							a = h - s;
						e = Math.cos(a) * r;
					} else
						(h = Math[Rt](t[$t], t.height)),
							(r = Math[St](t[$t] * t[$t] + t.height * t[Xt])),
							(a = h - (s - Math.PI / 2)),
							(e = Math.cos(a) * r);
					var o = e / 2,
						f = o * Math.cos(s),
						c = o * Math.sin(s),
						u = t.x + t[$t] / 2 - f,
						_ = t.y + t[Xt] / 2 - c,
						l = t.x + t.width / 2 + f,
						d = t.y + t.height / 2 + c;
					i = n[Bo](u, _, l, d);
				} else {
					if (!(this.type = qB.GRADIENT_TYPE_RADIAL)) return null;
					var b = tB(this[ko], t[$t], t[Xt]);
					(b.x += t.x),
						(b.y += t.y),
						this.tx && (Math.abs(this.tx) < 1 ? (b.x += t[$t] * this.tx) : (b.x += this.tx)),
						this.ty && (Math.abs(this.ty) < 1 ? (b.y += t.height * this.ty) : (b.y += this.ty));
					var v = CF(b.x, b.y, t.x, t.y);
					(v = Math.max(v, CF(b.x, b.y, t.x, t.y + t[Xt]))),
						(v = Math.max(v, CF(b.x, b.y, t.x + t[$t], t.y + t[Xt]))),
						(v = Math.max(v, CF(b.x, b.y, t.x + t[$t], t.y))),
						(i = n[Go](b.x, b.y, 0, b.x, b.y, v));
				}
				var y = this[Co],
					g = this[Ro];
				(g && g[F] == y[F]) || (g = this._7P());
				for (var E = 0, x = y.length; E < x; E++) i[Wo](g[E], y[E]);
				return i;
			},
		});
	var zk = new jk(
			qB.GRADIENT_TYPE_LINEAR,
			[NF(2332033023), NF(1154272460), NF(1154272460), NF(1442840575)],
			[0.1, 0.3, 0.7, 0.9],
			Math.PI / 2
		),
		Vk = new jk(qB[$o], [NF(2332033023), NF(1154272460), NF(1154272460), NF(1442840575)], [0.1, 0.3, 0.7, 0.9], 0),
		Kk =
			(new jk(qB[$o], [NF(1154272460), NF(1442840575)], [0.1, 0.9], 0),
			new jk(qB[Xo], [NF(2298478591), NF(1156509422), NF(1720223880), NF(1147561574)], [0.1, 0.3, 0.7, 0.9], 0, -0.3, -0.3)),
		Qk = [NF(0), NF(4294901760), NF(4294967040), NF(4278255360), NF(4278250239), NF(4278190992), NF(4294901958), NF(0)],
		qk = [0, 0.12, 0.28, 0.45, 0.6, 0.75, 0.8, 1],
		tG = new jk(qB.GRADIENT_TYPE_LINEAR, Qk, qk),
		iG = new jk(qB[$o], Qk, qk, Math.PI / 2),
		nG = new jk(qB[Xo], Qk, qk);
	(jk.LINEAR_GRADIENT_VERTICAL = zk), (jk[Ho] = Vk), (jk[Yo] = Kk), (jk[Jo] = tG), (jk[Zo] = iG), (jk[Uo] = nG);
	var eG = fi,
		sG = ei,
		hG = jo,
		rG = _i,
		aG = zo,
		oG = Vo;
	(qB.SEGMENT_MOVE_TO = eG), (qB[Ko] = sG), (qB.SEGMENT_QUAD_TO = hG), (qB[Qo] = rG), (qB[qo] = aG), (qB[tf] = oG);
	function fG(t, i) {
		(this.id = ++VR), gF(t) ? (this[Fs] = t) : ((this[wi] = t), (this[Fs] = i));
	}
	OF(
		(fG[N] = {
			toJSON: function() {
				var t = { type: this[wi], points: this.points };
				return this[nf] && (t[nf] = !0), t;
			},
			parseJSON: function(t) {
				(this[wi] = t[wi]), (this[Fs] = t.points), (this.invalidTerminal = t[nf]);
			},
			points: null,
			type: sG,
			clone: function() {
				return new fG(this[wi], this.points ? kR(this.points) : null);
			},
			move: function(t, i) {
				if (this[Fs])
					for (var n = 0, e = this.points[F]; n < e; n++) {
						var s = this[Fs][n];
						QB[ef](s) && (this[Fs][n] += n % 2 == 0 ? t : i);
					}
			},
		}),
		{
			lastPoint: {
				get: function() {
					return this[wi] == aG
						? { x: this._p2x, y: this[fa] }
						: { x: this.points[this.points.length - 2], y: this.points[this[Fs][F] - 1] };
				},
			},
			firstPoint: {
				get: function() {
					return { x: this.points[0], y: this[Fs][1] };
				},
			},
		}
	),
		(QB.PathSegment = fG);
	DF[sf] = Fr;
	var cG = function(t) {
		(this[hf] = new JF()), (this._hY = t || []);
	};
	function uG(t, i, n) {
		return { x: t.x + (i.x - t.x) * n, y: t.y + (i.y - t.y) * n };
	}
	function _G(t, i, n, e, s) {
		e = e || DF[sf];
		var h = (function(t, i, n, e) {
			var s = t[F];
			if (s && !(s < 0)) {
				e = e || 1;
				for (var h, r, a = 0; a++ < s; )
					if ((h = t[rf](a, 0)) && !(e < (r = CF(i, n, h.x, h.y)))) {
						for (var o = 0; o++ < e; )
							if ((h = t[rf](a + o, 0))) {
								var f = CF(i, n, h.x, h.y);
								if (r <= f) {
									a += o;
									break;
								}
								r = f;
							}
						for (var c = a, u = t[F] - 1, _ = 0, l = ((a = 0), t._hY.length); a < l; a++)
							if (c < (_ += t._hY[a]._lL || 0)) {
								u = a;
								break;
							}
						return (h.length = c), (h[qi] = u), h;
					}
			}
		})(t, i, n, s);
		if (h) {
			(i = h.x), (n = h.y);
			var r = t._hY,
				a = h[qi],
				o = a == r[F] - 1,
				f = r[a],
				c = r[S](0);
			if (f[wi] == sG || f[wi] == oG)
				if (af == e) c.splice(a, 0, new fG(sG, [h.x, h.y]));
				else {
					var u = r[a - 1].lastPoint,
						_ = f[na],
						l = uG(u, h, (b = CF(u.x, u.y, i, n) / CF(u.x, u.y, _.x, _.y))),
						d = uG(h, _, b);
					c[w](a, 1, new fG(hG, [l.x, l.y, i, n]), new fG(hG, f[nf] ? [d.x, d.y] : [d.x, d.y, _.x, _.y]));
				}
			else if (hi in h && af != e) {
				var b = h.t;
				if (f[wi] == rG) {
					(u = r[a - 1][ea]), (_ = { x: f[Fs][0], y: f[Fs][1] });
					var v = { x: f[Fs][2], y: f.points[3] },
						y = { x: f[Fs][4], y: f[Fs][5] },
						g = ((l = uG(u, _, b)), (d = uG(_, v, b)), uG(v, y, b)),
						E = uG(l, d, b),
						x = uG(d, g, b);
					c.splice(
						a,
						1,
						new fG(rG, [l.x, l.y, E.x, E.y, i, n]),
						new fG(rG, f[nf] ? [x.x, x.y, g.x, g.y] : [x.x, x.y, g.x, g.y, y.x, y.y])
					);
				} else
					f[wi] == hG &&
						((u = r[a - 1][ea]),
						(_ = { x: f.points[0], y: f[Fs][1] }),
						(v = { x: f[Fs][2], y: f[Fs][3] }),
						(l = uG(u, _, b)),
						(d = uG(_, v, b)),
						c[w](a, 1, new fG(hG, [l.x, l.y, i, n]), new fG(hG, f[nf] ? [d.x, d.y] : [d.x, d.y, v.x, v.y])));
			} else {
				_ = f.lastPoint;
				c.splice(a, 1, new fG(sG, [i, n]), new fG(sG, [_.x, _.y]));
			}
			return { atEnd: o, index: a, isCurve: af !== e, segments: c };
		}
	}
	function lG(t, i, n) {
		this._$y(t, i, n);
	}
	function dG(t, i, n) {
		return new lG(t, i, n);
	}
	function bG(t, i, n) {
		return (n = n || DF[of]) == qB[ff]
			? t * i
			: n == qB.BLEND_MODE_DARKEN
			? Math.min(t, i)
			: n == qB[cf]
			? 1 - (1 - i) / t
			: n == qB[uf]
			? t + i - 1
			: n == qB.BLEND_MODE_LIGHTEN
			? Math.max(t, i)
			: n == qB[_f]
			? t + i - t * i
			: i;
	}
	(cG[N] = {
		toJSON: function() {
			var i = [];
			return (
				this._hY[It](function(t) {
					i.push(t[lf]());
				}),
				i
			);
		},
		parseJSON: function(t) {
			var i = this._hY;
			t.forEach(function(t) {
				i[L](new fG(t[wi], t[Fs]));
			});
		},
		clear: function() {
			(this._hY[F] = 0), this[hf][Ot](), (this._lL = 0), (this._6W = !0), (this._hY.__lDSegments = null);
		},
		_fO: !0,
		_7R: function(t, i) {
			this._fO && 0 === this._hY[F] && t != eG && this._hY[L](new fG(eG, [0, 0])), this._hY[L](new fG(t, i)), (this._6W = !0);
		},
		add: function(t, i) {
			GR(this._hY, t, i), (this._6W = !0);
		},
		removePathSegment: function(t) {
			if (t >= this._hY.length) return !1;
			this._hY[w](t, 1), (this._6W = !0);
		},
		moveTo: function(t, i) {
			this._7R(eG, [t, i]);
		},
		lineTo: function(t, i) {
			this._7R(sG, [t, i]);
		},
		quadTo: function(t, i, n, e) {
			this._7R(hG, [t, i, n, e]);
		},
		curveTo: function(t, i, n, e, s, h) {
			this._7R(rG, [t, i, n, e, s, h]);
		},
		arcTo: function(t, i, n, e, s) {
			this._7R(aG, [t, i, n, e, s]);
		},
		closePath: function() {
			this._7R(oG);
		},
		_91: function(t, i, n, e, s) {
			if (e.selectionColor) {
				if (n == qB.SELECTION_TYPE_SHADOW) {
					if (!e[df]) return;
					return (
						(t[fo] = e[bf]),
						(t.shadowBlur = e[df] * i),
						(t[uo] = (e[vf] || 0) * i),
						void (t.shadowOffsetY = (e.selectionShadowOffsetY || 0) * i)
					);
				}
				if (n == qB[yf]) {
					if (!e.selectionBorder) return;
					t[Oa] = e[bf];
					var h = s[Ea] || 0;
					s.outline && (h += 2 * s[gf]), (t[Ea] = e.selectionBorder + h), this._nP(t), t[La]();
				}
			}
		},
		_6W: !0,
		_hY: null,
		_lL: 0,
		lineCap: Lr,
		lineJoin: tr,
		draw: function(t, i, n, e, s) {
			(t[Ef] = n.lineCap || this[Ef]), (t[xf] = n[xf] || this.lineJoin), e && ((s = s || n), this._91(t, i, s.selectionType, s, n));
			var h = e && s.selectionType == qB[Gr];
			n[mf] &&
				(this._nP(t), (t[Ea] = n[Ea] + 2 * (n[gf] || 0)), (t[Oa] = n.outlineStyle), t[La](), h && ((h = !1), (t.shadowColor = pf))),
				(t[Ea] = 0),
				this._nP(t),
				n[wf] && ((t[pa] = n[Fa] || n[wf]), t[Tf]()),
				n[Nf] && ((t[pa] = n[Af] || n.fillGradient), t[Tf]()),
				n.lineWidth &&
					((t[Ea] = n[Ea]),
					n[Of] &&
						(n.lineFillColor && ((t[Oa] = n.lineFillColor), t[La](), h && (t[fo] = pf)),
						(t[Ef] = n[If] || t.lineCap),
						(t[xf] = n[Lf] || t.lineJoin),
						(t.lineDash = n[Of]),
						(t.lineDashOffset = n[Mf])),
					(t[Oa] = n[Fa] || n[Oa]),
					t[La](),
					(t.lineDash = []));
		},
		_nP: function(t) {
			var i,
				n,
				e = this._hY.__lDSegments || this._hY;
			t[Sf]();
			for (var s = 0, h = e[F]; s < h; s++) (i = e[s]), Sk._nP(t, i, n), (n = i);
		},
		invalidate: function() {
			this._6W = !0;
		},
		validate: function() {
			if (((this._6W = !1), this[hf][Ot](), (this._lL = 0) != this._hY[F]))
				for (var t, i, n = this._hY, e = 1, s = n[0], h = s, r = n[F]; e < r; e++)
					(t = n[e])[wi] == eG ? (h = t) : (Sk._65(this.bounds, t, s, h), (i = Sk._67(t, s, h)), (t._lL = i), (this._lL += i)),
						(s = t);
		},
		getBounds: function(t, i) {
			if ((this._6W && this[Mo](), (i = i || new JF()), t)) {
				var n = t / 2;
				i.set(this.bounds.x - n, this.bounds.y - n, this[hf][$t] + t, this.bounds[Xt] + t);
			} else i.set(this[hf].x, this[hf].y, this.bounds[$t], this[hf][Xt]);
			return i;
		},
		hitTest: function(t, i, n, e, s, h) {
			return function(t, i, n, e, s, h) {
				if (((n = n || 0), !(s = s || 0) && !h)) return !1;
				if (!e && !this[No](s).intersectsPoint(t, i, n)) return !1;
				var r = Math[tr](2 * n) || 1,
					a = fk(r, r),
					o = (a[zr], -t + n),
					f = -i + n;
				if ((a.setTransform(1, 0, 0, 1, o, f), a[Df]))
					return (a[Ea] = (s || 0) + 2 * n), this._nP(a), !(!s || !a[Df](n, n)) || (!!h && a[Pf](n, n));
				this._nP(a), s && a.stroke(), h && a[Tf]();
				var c = _k(a, 0, 0, r, r);
				if (!c) return !1;
				for (var u = (c = c[Qi]).length / 4; 0 < u; ) {
					if (0 < c[4 * u - 1]) return !0;
					--u;
				}
				return !1;
			}[m](this, t, i, n, e, s, h);
		},
		toSegments: function() {
			return [][B](this._hY);
		},
		generator: function(t, i, n, e, s) {
			return function(t, i, n, e, s) {
				this._6W && this[Mo]();
				var h = s ? this[No](s) : this[hf],
					o = n / h[$t],
					f = t - o * h.x,
					c = e / h[Xt],
					u = i - c * h.y,
					r = this._hY,
					_ = [];
				return (
					RR(
						r,
						function(t) {
							var i = t.clone(),
								n = i.points;
							if (n && n.length) {
								for (var e = n[F], s = [], h = 0; h < e; h++) {
									var r = n[h],
										a = n[++h];
									(r = o * r + f), (a = c * a + u), s.push(r), s[L](a);
								}
								i.points = s;
							}
							_[L](i);
						},
						this
					),
					new cG(_)
				);
			}[m](this, t, i, n, e, s);
		},
		getLocation: function(t, i) {
			return Ok.call(this, t, i || 0);
		},
	}),
		OF(cG.prototype, {
			segments: {
				get: function() {
					return this._hY;
				},
				set: function(t) {
					this[Ot](), (this._hY = t);
				},
			},
			length: {
				get: function() {
					return this._6W && this[Mo](), this._lL;
				},
			},
			_empty: {
				get: function() {
					return 0 == this._hY[F];
				},
			},
		}),
		(lG[N] = {
			_$y: function(t, i, n) {
				var e,
					s,
					h,
					r,
					a,
					o = t.length,
					f = 0,
					c = 0;
				for (a = 0; a < o; a += 4)
					if (0 < t[a + 3]) {
						e = ((a + 4) / i / 4) | 0;
						break;
					}
				for (a = o - 4; 0 <= a; a -= 4)
					if (0 < t[a + 3]) {
						s = ((a + 4) / i / 4) | 0;
						break;
					}
				for (f = 0; f < i; f++) {
					for (c = e; c < s; c++)
						if (0 < t[c * i * 4 + 4 * f + 3]) {
							h = f;
							break;
						}
					if (0 <= h) break;
				}
				for (f = i - 1; 0 <= f; f--) {
					for (c = e; c < s; c++)
						if (0 < t[c * i * 4 + 4 * f + 3]) {
							r = f;
							break;
						}
					if (0 <= r) break;
				}
				(this._x = h),
					(this._y = e),
					(this[ao] = r - h + 1),
					(this._height = s - e + 1),
					(this._l7 = new JF(h, e, this[ao], this[oo])),
					(this[Cf] = this[ao] * this[oo]),
					(this._originalPixelsWidth = i),
					(this._originalPixels = t);
			},
			_f3: function(t, i) {
				return this._originalPixels[4 * (t + this._x + (this._y + i) * this[Rf]) + 3];
			},
			_jT: function(t, i, n) {
				(!n || n <= 1) && (n = 1), (n |= 0), (t = Math.round(t - this._x) - n), (i = Math.round(i - this._y) - n), (n += n);
				for (var e = t, s = i; s < i + n; ) {
					for (e = t; e < t + n; ) {
						if (this._f3(e, s)) return !0;
						++e;
					}
					++s;
				}
				return !1;
			},
		}),
		(qB.BLEND_MODE_DARKEN = Ff),
		(qB[ff] = Bf),
		(qB.BLEND_MODE_COLOR_BURN = kf),
		(qB[uf] = Gf),
		(qB[Wf] = $f),
		(qB[_f] = Xf),
		(qB[Hf] = Yf),
		(DF[of] = qB[uf]);
	var vG = function(t, i, n) {
		(this._kX = t), (this[Na] = i || 1), (this._jS = n);
	};
	vG[N] = {
		scale: 1,
		_kX: null,
		_l1: null,
		_jS: !0,
		_nP: function(t, i, n) {
			if (
				(i =
					i &&
					(function(t) {
						if (U == t[0]) {
							if (3 == (t = t[Kn](1))[F]) t = t[0] + t[0] + t[1] + t[1] + t[2] + t[2];
							else if (6 != t[F]) return;
							return [((t = parseInt(t, 16)) >> 16) & 255, (t >> 8) & 255, 255 & t];
						}
						if (/^rgb/i[A](t)) {
							var i = t[v](Zf),
								n = t[v](Q);
							if (i < 0 || n < i) return;
							if ((t = (t = t[Kn](i + 1, n))[C](V))[F] < 3) return;
							return [parseInt(t[0]), parseInt(t[1]), parseInt(t[2]), 3 == t.length ? 255 : parseInt(t[3])];
						}
						QB[et]("color format error, [" + t + Uf);
					})(i)) &&
				!1 !== this._jS
			) {
				this._kX instanceof Image &&
					(((e = ok()).width = this._kX[$t]),
					(e[Xt] = this._kX[Xt]),
					e.g[vo](this._kX, 0, 0, this._kX[$t], this._kX[Xt]),
					(this._kX = e)),
					this._l1 || (this._l1 = {});
				var e,
					s = i + n;
				if (
					((e = this._l1[s]) ||
						((e = (function(t, i, n) {
							var e = _k(t.g, 0, 0, t.width, t.height);
							if (e) {
								var s = e.data;
								if (n instanceof Function) s = n(t, s, i) || s;
								else {
									var h = i[0] / 255,
										r = i[1] / 255,
										a = i[2] / 255;
									if (n == qB[Hf])
										for (var o = 0, f = s.length; o < f; o += 4) {
											var c = (77 * s[o] + 151 * s[o + 1] + 28 * s[o + 2]) >> 8;
											(s[o] = (c * h) | 0), (s[o + 1] = (c * r) | 0), (s[o + 2] = (c * a) | 0);
										}
									else
										for (o = 0, f = s.length; o < f; o += 4)
											(s[o] = (255 * bG(h, s[o] / 255, n)) | 0),
												(s[o + 1] = (255 * bG(r, s[o + 1] / 255, n)) | 0),
												(s[o + 2] = (255 * bG(a, s[o + 2] / 255, n)) | 0);
								}
								return (t = ok(t[$t], t[Xt])).g[qa](e, 0, 0), t;
							}
						})(this._kX, i, n)) || (this._jS = !1),
						(this._l1[s] = e || this._kX)),
					e)
				)
					if (qR)
						try {
							t[vo](e, 0, 0);
						} catch (t) {}
					else t.drawImage(e, 0, 0);
			} else t[vo](this._kX, 0, 0);
		},
	};
	function yG(t, i, n, e, s, h, r, a, o) {
		this._nE = (function(t, i, n, e, s, h, r, a, o) {
			if (HF(t, i, n, e, a, o)) return null;
			var f,
				c,
				u = new fG(sG, [t + n - s, i]),
				_ = new fG(hG, [t + n, i, t + n, i + h]),
				l = new fG(sG, [t + n, i + e - h]),
				d = new fG(hG, [t + n, i + e, t + n - s, i + e]),
				b = new fG(sG, [t + s, i + e]),
				v = new fG(hG, [t, i + e, t, i + e - h]),
				y = new fG(sG, [t, i + h]),
				g = new fG(hG, [t, i, t + s, i]),
				E = (new fG(oG), [u, _, l, d, b, v, y, g]),
				x = new JF(t + s, i + h, n - s - s, e - h - h);
			(c = a < t ? ((f = jF), 5) : t + n < a ? ((f = zF), 1) : ((f = _i), 0)),
				o < i ? f == jF && (c = 7) : i + e < o ? (f == zF ? (c = 3) : _i == f && (c = 4)) : f == jF ? (c = 6) : f == zF && (c = 2);
			var m = (function(t, i, n, e, s, h, r, a, o, f, c) {
					var u = a / 2;
					switch (((h = h || 1e-4), (r = r || 1e-4), t)) {
						case 7:
							var _ = [i, n + r, i, n, i + h, n],
								l = i + h,
								d = n + r;
							return gG(t, _, l, d, i, n, e, s, h, r, a, o, f, c);
						case 5:
							return gG(
								t,
								(_ = [i + h, n + s, i, n + s, i, n + s - r]),
								(l = i + h),
								(d = n + s - r),
								i,
								n,
								e,
								s,
								h,
								r,
								a,
								o,
								f,
								c
							);
						case 3:
							return gG(
								t,
								(_ = [i + e, n + s - r, i + e, n + s, i + e - h, n + s]),
								(l = i + e - h),
								(d = n + s - r),
								i,
								n,
								e,
								s,
								h,
								r,
								a,
								o,
								f,
								c
							);
						case 1:
							return gG(
								t,
								(_ = [i + e - h, n, i + e, n, i + e, n + r]),
								(l = i + e - h),
								(d = n + r),
								i,
								n,
								e,
								s,
								h,
								r,
								a,
								o,
								f,
								c
							);
						case 0:
							return (function(t, i, n, e, s, h, r, a) {
								var o, f;
								if (t + e <= r - h) o = { y: i, x: r - h, _nENO: 0 };
								else {
									o = { y: i + s, x: Math.max(t, r - h) };
									var c = [t, i + s, t, i, t + e, i],
										u = new kF(r, a, o.x, o.y);
									(o = u._$c(c))
										? (gF(o) && (o = o[0].t > o[1].t ? o[0] : o[1]),
										  (_ = (_ = EG(c, [o]))[0]) && (o._nE = new fG(hG, _.slice(2))),
										  (o[jf] = 7))
										: (o = { y: i, x: t + e, _nENO: 0 });
								}
								if (r + h <= t + n - e) f = { y: i, x: r + h, _nENO: 0 };
								else {
									f = { y: i + s, x: Math.min(t + n, r + h) };
									var _,
										l = [t + n - e, i, t + n, i, t + n, i + s];
									(f = (u = new kF(r, a, f.x, f.y))._$c(l))
										? (gF(f) && (f = f[0].t < f[1].t ? f[0] : f[1]),
										  (_ = EG(l, [f])) && _[_.length - 1] && (f._nE = new fG(hG, _[_[F] - 1][S](2))),
										  (f[jf] = 1))
										: (f = { y: i, x: t + n - e, _nENO: 0 });
								}
								return [o, f];
							})(i, n, e, h, r, u, o, f);
						case 2:
							return (function(t, i, n, e, s, h, r, a, o) {
								var f, c;
								if (i + h <= o - r) f = { x: t + n, y: o - r, _nENO: 2 };
								else {
									f = { x: t + n - s, y: Math.max(i, o - r) };
									var u = [t + n - s, i, t + n, i, t + n, i + h],
										_ = new kF(a, o, f.x, f.y);
									(f = _._$c(u))
										? (gF(f) && (f = f[0].t > f[1].t ? f[0] : f[1]),
										  (l = (l = EG(u, [f]))[0]) && (f._nE = new fG(hG, l[S](2))),
										  (f._nENO = 1))
										: (f = { x: t + n, y: i + h, _nENO: 2 });
								}
								if (o + r <= i + e - h) c = { x: t + n, y: o + r, _nENO: 2 };
								else {
									c = { x: t + n - s, y: Math.min(i + e, o + r) };
									var l,
										d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
									(c = (_ = new kF(a, o, c.x, c.y))._$c(d))
										? (gF(c) && (c = c[0].t < c[1].t ? c[0] : c[1]),
										  (l = EG(d, [c]))[1] && (c._nE = new fG(hG, l[1].slice(2))),
										  (c._nENO = 3))
										: (c = { x: t + n, y: i + e - h, _nENO: 2 });
								}
								return [f, c];
							})(i, n, e, s, h, r, u, o, f);
						case 4:
							return (function(t, i, n, e, s, h, r, a, o) {
								var f, c;
								if (t + s <= a - r) c = { y: i + e, x: a - r, _nENO: 4 };
								else {
									c = { y: i + e - h, x: Math.max(t, a - r) };
									var u = [t + s, i + e, t, i + e, t, i + e - h],
										_ = new kF(a, o, c.x, c.y);
									(c = _._$c(u))
										? (gF(c) && (c = c[0].t < c[1].t ? c[0] : c[1]),
										  (l = (l = EG(u, [c]))[l.length - 1]) && (c._nE = new fG(hG, l[S](2))),
										  (c[jf] = 5))
										: (c = { y: i + e, x: t + s, _nENO: 4 });
								}
								if (a + r <= t + n - s) f = { y: i + e, x: a + r, _nENO: 4 };
								else {
									f = { y: i + e - h, x: Math.min(t + n, a + r) };
									var l,
										d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
									(f = (_ = new kF(a, o, f.x, f.y))._$c(d))
										? (gF(f) && (f = f[0].t > f[1].t ? f[0] : f[1]),
										  (l = EG(d, [f]))[0] && (f._nE = new fG(hG, l[0][S](2))),
										  (f[jf] = 3))
										: (f = { y: i + e, x: t + n - s, _nENO: 4 });
								}
								return [f, c];
							})(i, n, e, s, h, r, u, o, f);
						case 6:
							return (function(t, i, n, e, s, h, r, a) {
								var o, f;
								if (i + s <= a - h) f = { x: t, y: a - h, _nENO: 6 };
								else {
									f = { x: t + e, y: Math.max(i, a - h) };
									var c = [t, i + s, t, i, t + e, i],
										u = new kF(r, a, f.x, f.y);
									(f = u._$c(c))
										? (gF(f) && (f = f[0].t < f[1].t ? f[0] : f[1]),
										  (_ = (_ = EG(c, [f]))[_.length - 1]) && (f._nE = new fG(hG, _[S](2))))
										: (f = { x: t, y: i + s }),
										(f._nENO = 7);
								}
								if (a + h <= i + n - s) o = { x: t, y: a + h, _nENO: 6 };
								else {
									o = { x: t + e, y: Math.min(i + n, a + h) };
									var _,
										l = [t + e, i + n, t, i + n, t, i + n - s];
									(o = (u = new kF(r, a, o.x, o.y))._$c(l))
										? (gF(o) && (o = o[0].t > o[1].t ? o[0] : o[1]),
										  (_ = EG(l, [o]))[0] && (o._nE = new fG(hG, _[0][S](2))),
										  (o[jf] = 5))
										: (o = { x: t, y: i + n - s, _nENO: 6 });
								}
								return [o, f];
							})(i, n, s, h, r, u, o, f);
					}
				})(c, t, i, n, e, s, h, r, a, o, x),
				p = m[0],
				w = m[1],
				T = new cG(),
				N = T._hY;
			N[L](new fG(eG, [p.x, p.y])), N.push(new fG(sG, [a, o])), N.push(new fG(sG, [w.x, w.y])), w._nE && (N[L](w._nE), w[jf]++);
			for (var A = w[jf] % 8, O = p._nENO; N.push(E[A]), ++A, (A %= 8) != O; );
			return p._nE && N[L](p._nE), T[zf](), T;
		})(t, i, n, e, s, h, r, a, o);
	}
	function gG(t, i, n, e, s, h, r, a, o, f, c, u, _, l) {
		var d = new kF(u, _, n, e),
			b = new kF(i[0], i[1], i[4], i[5])._3N(d, c),
			v = b[0],
			y = b[1];
		if (v._rest !== M) {
			(v[jf] = (t - 1) % 8), (y[jf] = (t + 1) % 8);
			var g = v[Wt];
			7 == t
				? ((v.y = h + f + Math.min(l[Xt], g)), (y.x = s + o + Math.min(l[$t], g)))
				: 5 == t
				? ((v.x = s + o + Math.min(l[$t], g)), (y.y = h + a - f - Math.min(l[Xt], g)))
				: 3 == t
				? ((v.y = h + a - f - Math.min(l[Xt], g)), (y.x = s + r - o - Math.min(l[$t], g)))
				: 1 == t && ((v.x = s + r - o - Math.min(l[$t], g)), (y.y = h + f + Math.min(l[Xt], g)));
		} else {
			d._oJ(d._oP, d._oR, v.x, v.y), (v = d._$c(i)), d._oJ(d._oP, d._oR, y.x, y.y);
			var E = EG(i, [v, (y = d._$c(i))]),
				x = E[0],
				m = E[2];
			(v._nENO = t), (y[jf] = t), (v._nE = new fG(hG, x.slice(2))), (y._nE = new fG(hG, m[S](2)));
		}
		return [v, y];
	}
	function EG(t, i) {
		for (var n, e, s, h, r, a, o = t[0], f = t[1], c = t[2], u = t[3], _ = t[4], l = t[5], d = [], b = 0; b < i.length; b++)
			0 != (a = (r = i[b]).t) && 1 != a
				? ((n = o + (c - o) * a),
				  (e = f + (u - f) * a),
				  (s = c + (_ - c) * a),
				  (h = u + (l - u) * a),
				  d[L]([o, f, n, e, r.x, r.y]),
				  (o = r.x),
				  (f = r.y),
				  (c = s),
				  (u = h))
				: d.push(null);
		return s !== M && d[L]([r.x, r.y, s, h, _, l]), d;
	}
	var xG = {
		server: {
			draw: function(t) {
				t[Vf](),
					t[Ta](0, 0),
					t[Sf](),
					t.moveTo(0, 0),
					t[la](40, 0),
					t[la](40, 40),
					t.lineTo(0, 40),
					t[zf](),
					t.clip(),
					t[Ta](0, 0),
					t[Ta](0, 0),
					t.scale(1, 1),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t[Ef] = Lr),
					(t.lineJoin = Rr),
					(t[Kf] = 4),
					t[Vf](),
					t.save(),
					t.restore(),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t.restore(),
					t.save(),
					t.restore(),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Sa](),
					t[Vf]();
				var i = t[Bo](6.75, 3.9033, 30.5914, 27.7447);
				i.addColorStop(0.0493, Qf),
					i.addColorStop(0.0689, qf),
					i[Wo](0.0939, tc),
					i.addColorStop(0.129, ic),
					i[Wo](0.2266, nc),
					i[Wo](0.2556, ec),
					i[Wo](0.2869, sc),
					i[Wo](0.3194, hc),
					i[Wo](0.3525, rc),
					i[Wo](0.3695, ac),
					i.addColorStop(0.5025, oc),
					i[Wo](0.9212, fc),
					i[Wo](1, cc),
					(t[pa] = i),
					t.beginPath(),
					t[_a](25.677, 4.113),
					t.bezierCurveTo(25.361, 2.4410000000000007, 23.364, 2.7940000000000005, 22.14, 2.7990000000000004),
					t.bezierCurveTo(19.261, 2.813, 16.381, 2.8260000000000005, 13.502, 2.8400000000000003),
					t[da](12.185, 2.846, 10.699000000000002, 2.652, 9.393, 2.8790000000000004),
					t[da](9.19, 2.897, 8.977, 2.989, 8.805, 3.094),
					t[da](8.084999999999999, 3.5109999999999997, 7.436999999999999, 4.1259999999999994, 6.776, 4.63),
					t[da](5.718999999999999, 5.436, 4.641, 6.22, 3.6029999999999998, 7.05),
					t.bezierCurveTo(4.207, 6.5889999999999995, 21.601999999999997, 36.579, 21.028, 37.307),
					t[da](22.019, 36.063, 23.009999999999998, 34.819, 24.000999999999998, 33.575),
					t[da](24.587999999999997, 32.84, 25.589999999999996, 31.995000000000005, 25.593999999999998, 30.983000000000004),
					t[da](25.595999999999997, 30.489000000000004, 25.598, 29.994000000000003, 25.601, 29.500000000000004),
					t[da](25.612, 26.950000000000003, 25.622, 24.400000000000006, 25.633, 21.85),
					t[da](25.657, 16.318, 25.680999999999997, 10.786000000000001, 25.704, 5.253),
					t.bezierCurveTo(25.706, 4.885, 25.749, 4.478, 25.677, 4.113),
					t[da](25.67, 4.077, 25.697, 4.217, 25.677, 4.113),
					t[zf](),
					t.fill(),
					t[La](),
					t.restore(),
					t.save(),
					t[Vf](),
					(t[pa] = uc),
					t[Sf](),
					t.moveTo(19.763, 6.645),
					t.bezierCurveTo(20.002000000000002, 6.643999999999999, 20.23, 6.691999999999999, 20.437, 6.778),
					t.bezierCurveTo(20.644000000000002, 6.864999999999999, 20.830000000000002, 6.991, 20.985, 7.146999999999999),
					t[da](21.14, 7.302999999999999, 21.266, 7.488999999999999, 21.352999999999998, 7.696999999999999),
					t[da](21.438999999999997, 7.903999999999999, 21.487, 8.133, 21.487, 8.372),
					t.lineTo(21.398, 36.253),
					t.bezierCurveTo(21.397, 36.489, 21.349, 36.713, 21.262, 36.917),
					t[da](21.174, 37.121, 21.048000000000002, 37.305, 20.893, 37.458),
					t[da](20.738, 37.611, 20.553, 37.734, 20.348, 37.818999999999996),
					t[da](20.141, 37.903999999999996, 19.916, 37.95099999999999, 19.679, 37.949),
					t.lineTo(4.675, 37.877),
					t[da](4.4399999999999995, 37.876000000000005, 4.216, 37.827000000000005, 4.012, 37.741),
					t[da](3.8089999999999997, 37.653999999999996, 3.6249999999999996, 37.528999999999996, 3.4719999999999995, 37.376),
					t[da](3.3179999999999996, 37.221, 3.1939999999999995, 37.037, 3.1079999999999997, 36.833999999999996),
					t[da](3.022, 36.629999999999995, 2.9739999999999998, 36.406, 2.9739999999999998, 36.172),
					t[la](2.924, 8.431),
					t.bezierCurveTo(2.923, 8.192, 2.971, 7.964, 3.057, 7.758),
					t[da](3.143, 7.552, 3.267, 7.365, 3.4219999999999997, 7.209),
					t[da](3.5769999999999995, 7.052999999999999, 3.76, 6.925, 3.965, 6.837),
					t.bezierCurveTo(4.17, 6.749, 4.396, 6.701, 4.633, 6.7),
					t[la](19.763, 6.645),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Sa](),
					t.save(),
					(t[pa] = _c),
					t[Sf](),
					t.arc(12.208, 26.543, 2.208, 0, 6.283185307179586, !0),
					t[zf](),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					(t[pa] = uc),
					t.beginPath(),
					t.arc(12.208, 26.543, 1.876, 0, 6.283185307179586, !0),
					t[zf](),
					t[Tf](),
					t.stroke(),
					t.restore(),
					t[Vf](),
					(t[pa] = _c),
					t[Sf](),
					t[_a](19.377, 17.247),
					t.bezierCurveTo(19.377, 17.724, 18.991999999999997, 18.108999999999998, 18.516, 18.108999999999998),
					t.lineTo(5.882, 18.108999999999998),
					t.bezierCurveTo(5.404999999999999, 18.108999999999998, 5.02, 17.723, 5.02, 17.247),
					t.lineTo(5.02, 11.144),
					t.bezierCurveTo(5.02, 10.666, 5.406, 10.281, 5.882, 10.281),
					t.lineTo(18.516, 10.281),
					t[da](18.993, 10.281, 19.377, 10.666, 19.377, 11.144),
					t[la](19.377, 17.247),
					t.closePath(),
					t.fill(),
					t[La](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t[pa] = uc),
					t.beginPath(),
					t[_a](18.536, 13.176),
					t[da](18.536, 13.518, 18.261000000000003, 13.794, 17.919, 13.794),
					t[la](6.479, 13.794),
					t.bezierCurveTo(6.1370000000000005, 13.794, 5.861, 13.518, 5.861, 13.176),
					t[la](5.861, 11.84),
					t[da](5.861, 11.498, 6.137, 11.221, 6.479, 11.221),
					t[la](17.918, 11.221),
					t.bezierCurveTo(18.259999999999998, 11.221, 18.535, 11.497, 18.535, 11.84),
					t[la](18.535, 13.176),
					t[zf](),
					t.fill(),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t[pa] = uc),
					t[Sf](),
					t[_a](18.536, 16.551),
					t.bezierCurveTo(18.536, 16.892999999999997, 18.261000000000003, 17.168999999999997, 17.919, 17.168999999999997),
					t[la](6.479, 17.168999999999997),
					t[da](6.1370000000000005, 17.168999999999997, 5.861, 16.892999999999997, 5.861, 16.551),
					t[la](5.861, 15.215999999999998),
					t[da](5.861, 14.872999999999998, 6.137, 14.596999999999998, 6.479, 14.596999999999998),
					t[la](17.918, 14.596999999999998),
					t[da](18.259999999999998, 14.596999999999998, 18.535, 14.872999999999998, 18.535, 15.215999999999998),
					t[la](18.535, 16.551),
					t[zf](),
					t[Tf](),
					t.stroke(),
					t.restore(),
					t[Sa](),
					t[Sa]();
			},
		},
		exchanger2: {
			draw: function(t) {
				t[Vf](),
					t.translate(0, 0),
					t.beginPath(),
					t[_a](0, 0),
					t.lineTo(40, 0),
					t[la](40, 40),
					t[la](0, 40),
					t[zf](),
					t[lc](),
					t[Ta](0, 0),
					t[Ta](0, 0),
					t[Na](1, 1),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t.lineCap = Lr),
					(t.lineJoin = Rr),
					(t[Kf] = 4),
					t[Vf](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t.restore(),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t.restore(),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Sa](),
					t.save();
				var i = t[Bo](0.4102, 24.3613, 39.5898, 24.3613);
				i[Wo](0, Qf),
					i.addColorStop(0.0788, nc),
					i[Wo](0.2046, dc),
					i.addColorStop(0.3649, bc),
					i[Wo](0.5432, vc),
					i[Wo](0.6798, yc),
					i[Wo](0.7462, gc),
					i.addColorStop(0.8508, Ec),
					i[Wo](0.98, ec),
					i.addColorStop(1, xc),
					(t.fillStyle = i),
					t[Sf](),
					t[_a](0.41, 16.649),
					t[da](0.633, 19.767, 0.871, 20.689, 1.094, 23.807000000000002),
					t[da](1.29, 26.548000000000002, 3.324, 28.415000000000003, 5.807, 29.711000000000002),
					t[da](10.582, 32.202000000000005, 16.477, 32.806000000000004, 21.875999999999998, 32.523),
					t[da](26.929, 32.258, 32.806, 31.197000000000003, 36.709999999999994, 27.992000000000004),
					t.bezierCurveTo(
						38.30499999999999,
						26.728000000000005,
						38.83599999999999,
						25.103000000000005,
						38.998999999999995,
						23.161000000000005
					),
					t.bezierCurveTo(39.589, 16.135000000000005, 39.589, 16.135000000000005, 39.589, 16.135000000000005),
					t[da](39.589, 16.135000000000005, 3.26, 16.647, 0.41, 16.649),
					t[zf](),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					t.save(),
					(t.fillStyle = uc),
					t[Sf](),
					t[_a](16.4, 25.185),
					t.bezierCurveTo(12.807999999999998, 24.924999999999997, 9.139, 24.238, 5.857999999999999, 22.705),
					t[da](
						3.175999999999999,
						21.450999999999997,
						-0.32200000000000095,
						18.971999999999998,
						0.544999999999999,
						15.533999999999999
					),
					t[da](
						1.3499999999999992,
						12.335999999999999,
						4.987999999999999,
						10.495999999999999,
						7.807999999999999,
						9.428999999999998
					),
					t.bezierCurveTo(
						11.230999999999998,
						8.133999999999999,
						14.911999999999999,
						7.519999999999999,
						18.558,
						7.345999999999998
					),
					t[da](22.233, 7.169999999999998, 25.966, 7.437999999999998, 29.548000000000002, 8.300999999999998),
					t[da](32.673, 9.052999999999999, 36.192, 10.296, 38.343, 12.814999999999998),
					t[da](
						40.86600000000001,
						15.768999999999998,
						39.208000000000006,
						19.066999999999997,
						36.406000000000006,
						21.043999999999997
					),
					t.bezierCurveTo(
						33.566,
						23.046999999999997,
						30.055000000000007,
						24.071999999999996,
						26.670000000000005,
						24.676999999999996
					),
					t[da](23.289, 25.28, 19.824, 25.436, 16.4, 25.185),
					t[da](13.529, 24.977, 19.286, 25.396, 16.4, 25.185),
					t[zf](),
					t.fill(),
					t.stroke(),
					t.restore(),
					t.restore(),
					t.save(),
					t[Vf](),
					t[Vf](),
					t[Vf](),
					t[Vf](),
					(t.fillStyle = mc),
					t[Sf](),
					t[_a](5.21, 21.754),
					t[la](8.188, 17.922),
					t[la](9.53, 18.75),
					t[la](15.956, 16.004),
					t[la](18.547, 17.523),
					t[la](12.074, 20.334),
					t.lineTo(13.464, 21.204),
					t.lineTo(5.21, 21.754),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t.restore(),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t.beginPath(),
					t.moveTo(17.88, 14.61),
					t[la](9.85, 13.522),
					t.lineTo(11.703, 12.757),
					t.lineTo(7.436, 10.285),
					t[la](10.783, 8.942),
					t.lineTo(15.091, 11.357),
					t[la](16.88, 10.614),
					t[la](17.88, 14.61),
					t.closePath(),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t[Sf](),
					t.moveTo(17.88, 14.61),
					t[la](9.85, 13.522),
					t[la](11.703, 12.757),
					t[la](7.436, 10.285),
					t[la](10.783, 8.942),
					t[la](15.091, 11.357),
					t[la](16.88, 10.614),
					t[la](17.88, 14.61),
					t.closePath(),
					t.fill(),
					t[La](),
					t.restore(),
					t.restore(),
					t[Sa](),
					t[Vf](),
					t.save(),
					t.save(),
					(t.fillStyle = mc),
					t[Sf](),
					t.moveTo(23.556, 15.339),
					t[la](20.93, 13.879),
					t[la](26.953, 11.304),
					t[la](25.559, 10.567),
					t.lineTo(33.251, 9.909),
					t[la](31.087, 13.467),
					t[la](29.619, 12.703),
					t.lineTo(23.556, 15.339),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t.restore(),
					t.restore(),
					t[Vf](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t.beginPath(),
					t[_a](30.028, 23.383),
					t[la](24.821, 20.366),
					t.lineTo(22.915, 21.227),
					t[la](21.669, 16.762),
					t[la](30.189, 17.942),
					t.lineTo(28.33, 18.782),
					t[la](33.579, 21.725),
					t[la](30.028, 23.383),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Sa](),
					t.save(),
					t[Vf](),
					(t[pa] = mc),
					t.beginPath(),
					t[_a](30.028, 23.383),
					t[la](24.821, 20.366),
					t[la](22.915, 21.227),
					t.lineTo(21.669, 16.762),
					t.lineTo(30.189, 17.942),
					t[la](28.33, 18.782),
					t[la](33.579, 21.725),
					t.lineTo(30.028, 23.383),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Sa](),
					t[Sa](),
					t[Sa](),
					t.restore(),
					t[Sa]();
			},
		},
		exchanger: {
			draw: function(t) {
				var i;
				t[Vf](),
					t[Ta](0, 0),
					t[Sf](),
					t[_a](0, 0),
					t.lineTo(40, 0),
					t[la](40, 40),
					t.lineTo(0, 40),
					t[zf](),
					t[lc](),
					t[Ta](0, 0),
					t[Ta](0, 0),
					t[Na](1, 1),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t[Ef] = Lr),
					(t[xf] = Rr),
					(t.miterLimit = 4),
					t.save(),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t.restore(),
					t.save(),
					t[Sa](),
					t.save(),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.restore(),
					t[Vf](),
					(i = t[Bo](0.2095, 20.7588, 39.4941, 20.7588)).addColorStop(0, pc),
					i.addColorStop(0.0788, wc),
					i.addColorStop(0.352, Tc),
					i[Wo](0.6967, Nc),
					i[Wo](0.8916, Ac),
					i[Wo](0.9557, Oc),
					i[Wo](1, Ic),
					(t[pa] = i),
					t[Sf](),
					t[_a](39.449, 12.417),
					t[la](39.384, 9.424),
					t.bezierCurveTo(39.384, 9.424, 0.7980000000000018, 22.264, 0.3710000000000022, 23.024),
					t[da](-0.026999999999997804, 23.733, 0.4240000000000022, 24.903000000000002, 0.5190000000000022, 25.647000000000002),
					t[da](0.7240000000000022, 27.244000000000003, 0.9240000000000023, 28.841, 1.1350000000000022, 30.437),
					t[da](1.3220000000000023, 31.843, 2.7530000000000023, 32.094, 3.9620000000000024, 32.094),
					t[da](8.799000000000003, 32.092, 13.636000000000003, 32.091, 18.473000000000003, 32.089),
					t[da](23.515, 32.086999999999996, 28.556000000000004, 32.086, 33.598, 32.083999999999996),
					t[da](34.859, 32.083999999999996, 36.286, 31.979999999999997, 37.266, 31.081999999999997),
					t[da](37.537, 30.820999999999998, 37.655, 30.535999999999998, 37.699999999999996, 30.229999999999997),
					t[la](37.711, 30.316999999999997),
					t[la](39.281, 16.498999999999995),
					t[da](39.281, 16.498999999999995, 39.467999999999996, 15.126999999999995, 39.489, 14.666999999999994),
					t[da](39.515, 14.105, 39.449, 12.417, 39.449, 12.417),
					t.closePath(),
					t.fill(),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t.save(),
					t.save(),
					t.restore(),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t.save(),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					(i = t[Bo](19.8052, 7.7949, 19.8052, 24.7632))[Wo](0, Lc),
					i[Wo](0.1455, Mc),
					i[Wo](0.2975, Sc),
					i[Wo](0.4527, Dc),
					i[Wo](0.6099, Pc),
					i.addColorStop(0.7687, Cc),
					i.addColorStop(0.9268, Rc),
					i[Wo](0.9754, Fc),
					i[Wo](1, Bc),
					(t[pa] = i),
					t.beginPath(),
					t[_a](33.591, 24.763),
					t[da](23.868000000000002, 24.754, 14.145, 24.746000000000002, 4.423000000000002, 24.738000000000003),
					t[da](
						3.140000000000002,
						24.737000000000002,
						-0.48799999999999777,
						24.838000000000005,
						0.3520000000000021,
						22.837000000000003
					),
					t[da](
						1.292000000000002,
						20.594000000000005,
						2.2330000000000023,
						18.351000000000003,
						3.1730000000000023,
						16.108000000000004
					),
					t[da](
						4.113000000000002,
						13.865000000000006,
						5.054000000000002,
						11.623000000000005,
						5.994000000000002,
						9.380000000000004
					),
					t.bezierCurveTo(
						6.728000000000002,
						7.629000000000005,
						9.521000000000003,
						7.885000000000004,
						11.156000000000002,
						7.880000000000004
					),
					t[da](
						16.974000000000004,
						7.861000000000004,
						22.793000000000003,
						7.843000000000004,
						28.612000000000002,
						7.825000000000005
					),
					t[da](30.976000000000003, 7.818000000000005, 33.341, 7.810000000000005, 35.707, 7.803000000000004),
					t[da](36.157000000000004, 7.802000000000004, 36.609, 7.787000000000004, 37.06, 7.804000000000005),
					t.bezierCurveTo(37.793, 7.833000000000005, 39.389, 7.875000000000004, 39.385000000000005, 9.424000000000005),
					t.bezierCurveTo(39.38400000000001, 9.647000000000006, 39.31, 10.138000000000005, 39.27700000000001, 10.359000000000005),
					t[da](
						38.81900000000001,
						13.361000000000004,
						38.452000000000005,
						15.764000000000006,
						37.99400000000001,
						18.766000000000005
					),
					t[da](
						37.806000000000004,
						19.998000000000005,
						37.61800000000001,
						21.230000000000004,
						37.43000000000001,
						22.462000000000007
					),
					t[da](37.151, 24.271, 35.264, 24.77, 33.591, 24.763),
					t.closePath(),
					t[Tf](),
					t[La](),
					t.restore(),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t[Sf](),
					t[_a](10.427, 19.292),
					t.lineTo(5.735, 16.452),
					t[la](12.58, 13.8),
					t[la](12.045, 15.07),
					t.lineTo(20.482, 15.072),
					t[la](19.667, 17.887),
					t[la](11.029, 17.851),
					t[la](10.427, 19.292),
					t[zf](),
					t.fill(),
					t[La](),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t.beginPath(),
					t[_a](13.041, 13.042),
					t.lineTo(8.641, 10.73),
					t[la](14.82, 8.474),
					t[la](14.373, 9.537),
					t.lineTo(22.102, 9.479),
					t[la](21.425, 11.816),
					t[la](13.54, 11.85),
					t[la](13.041, 13.042),
					t.closePath(),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t.fillStyle = mc),
					t[Sf](),
					t[_a](29.787, 16.049),
					t[la](29.979, 14.704),
					t[la](21.51, 14.706),
					t.lineTo(22.214, 12.147),
					t[la](30.486, 12.116),
					t.lineTo(30.653, 10.926),
					t.lineTo(36.141, 13.4),
					t.lineTo(29.787, 16.049),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t[pa] = mc),
					t[Sf](),
					t[_a](28.775, 23.14),
					t[la](29.011, 21.49),
					t[la](19.668, 21.405),
					t.lineTo(20.523, 18.295),
					t[la](29.613, 18.338),
					t.lineTo(29.815, 16.898),
					t[la](35.832, 19.964),
					t[la](28.775, 23.14),
					t[zf](),
					t[Tf](),
					t[La](),
					t.restore(),
					t[Sa](),
					t[Sa](),
					t[Sa]();
			},
		},
		cloud: {
			draw: function(t) {
				t.save(),
					t[Sf](),
					t[_a](0, 0),
					t.lineTo(90.75, 0),
					t[la](90.75, 62.125),
					t[la](0, 62.125),
					t[zf](),
					t[lc](),
					(t[Oa] = pf),
					(t[Ef] = Lr),
					(t[xf] = Rr),
					(t[Kf] = 4),
					t.save();
				var i = t.createLinearGradient(44.0054, 6.4116, 44.0054, 51.3674);
				i.addColorStop(0, "rgba(159, 160, 160, 0.7)"),
					i[Wo](0.9726, kc),
					(t[pa] = i),
					t[Sf](),
					t.moveTo(57.07, 20.354),
					t[da](57.037, 20.354, 57.006, 20.358, 56.974000000000004, 20.358),
					t.bezierCurveTo(54.461000000000006, 14.308, 48.499, 10.049000000000001, 41.538000000000004, 10.049000000000001),
					t.bezierCurveTo(
						33.801,
						10.049000000000001,
						27.309000000000005,
						15.316000000000003,
						25.408000000000005,
						22.456000000000003
					),
					t[da](18.988000000000007, 23.289, 14.025000000000006, 28.765000000000004, 14.025000000000006, 35.413000000000004),
					t[da](14.025000000000006, 42.635000000000005, 19.880000000000006, 48.49, 27.102000000000004, 48.49),
					t[da](29.321000000000005, 48.49, 31.407000000000004, 47.933, 33.237, 46.961),
					t[da](34.980000000000004, 49.327, 37.78, 50.867999999999995, 40.945, 50.867999999999995),
					t[da](43.197, 50.867999999999995, 45.261, 50.086, 46.896, 48.785999999999994),
					t.bezierCurveTo(49.729, 50.78699999999999, 53.244, 51.98799999999999, 57.07, 51.98799999999999),
					t[da](66.412, 51.98799999999999, 73.986, 44.90699999999999, 73.986, 36.17099999999999),
					t[da](73.986, 27.436, 66.413, 20.354, 57.07, 20.354),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t.restore();
			},
		},
		node: {
			width: 60,
			height: 100,
			draw: function(t) {
				t.save(),
					t[Ta](0, 0),
					t.beginPath(),
					t[_a](0, 0),
					t[la](40, 0),
					t.lineTo(40, 40),
					t[la](0, 40),
					t[zf](),
					t[lc](),
					t[Ta](0, 0),
					t.translate(0, 0),
					t.scale(1, 1),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t[Ef] = Lr),
					(t[xf] = Rr),
					(t[Kf] = 4),
					t.save(),
					(t[pa] = Gc),
					t[Sf](),
					t.moveTo(13.948, 31.075),
					t.lineTo(25.914, 31.075),
					t[Wc](25.914, 31.075, 25.914, 31.075),
					t.lineTo(25.914, 34.862),
					t[Wc](25.914, 34.862, 25.914, 34.862),
					t.lineTo(13.948, 34.862),
					t[Wc](13.948, 34.862, 13.948, 34.862),
					t[la](13.948, 31.075),
					t[Wc](13.948, 31.075, 13.948, 31.075),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t[pa] = $c),
					t[Sf](),
					t[_a](29.679, 35.972),
					t[da](29.679, 36.675000000000004, 29.110999999999997, 37.244, 28.407999999999998, 37.244),
					t.lineTo(11.456, 37.244),
					t[da](10.751999999999999, 37.244, 10.183, 36.675, 10.183, 35.972),
					t.lineTo(10.183, 36.136),
					t[da](10.183, 35.431000000000004, 10.751999999999999, 34.863, 11.456, 34.863),
					t[la](28.407, 34.863),
					t[da](29.11, 34.863, 29.678, 35.431, 29.678, 36.136),
					t.lineTo(29.678, 35.972),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t.fillStyle = $c),
					t.beginPath(),
					t[_a](0.196, 29.346),
					t.bezierCurveTo(0.196, 30.301, 0.9690000000000001, 31.075, 1.925, 31.075),
					t[la](37.936, 31.075),
					t.bezierCurveTo(38.891, 31.075, 39.665, 30.301, 39.665, 29.346),
					t[la](39.665, 27.174),
					t.lineTo(0.196, 27.174),
					t[la](0.196, 29.346),
					t.closePath(),
					t[Tf](),
					t[La](),
					t.restore(),
					t.save(),
					(t[pa] = Xc),
					t[Sf](),
					t.moveTo(37.937, 3.884),
					t.lineTo(1.926, 3.884),
					t.bezierCurveTo(0.97, 3.884, 0.19699999999999984, 4.657, 0.19699999999999984, 5.614),
					t.lineTo(0.19699999999999984, 27.12),
					t.lineTo(39.666000000000004, 27.12),
					t[la](39.666000000000004, 5.615),
					t[da](39.665, 4.657, 38.892, 3.884, 37.937, 3.884),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t.restore(),
					t[Sa](),
					t[Vf]();
				var i = t[Bo](6.9609, 2.9341, 32.9008, 28.874);
				i[Wo](0, Hc),
					i[Wo](1, Yc),
					(t.fillStyle = i),
					t[Sf](),
					t.moveTo(35.788, 6.39),
					t.lineTo(4.074, 6.39),
					t.bezierCurveTo(3.315, 6.39, 2.702, 7.003, 2.702, 7.763),
					t[la](2.702, 24.616),
					t[la](37.159, 24.616),
					t[la](37.159, 7.763),
					t.bezierCurveTo(37.159, 7.003, 36.546, 6.39, 35.788, 6.39),
					t[zf](),
					t.fill(),
					t[La](),
					t[Sa](),
					t.restore();
			},
		},
		group: {
			draw: function(t) {
				t.save(),
					t[Ta](0, 0),
					t[Sf](),
					t.moveTo(0, 0),
					t[la](47.75, 0),
					t[la](47.75, 40),
					t[la](0, 40),
					t[zf](),
					t[lc](),
					t.translate(0, 0),
					t[Ta](0, 0),
					t[Na](1, 1),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t[Ef] = Lr),
					(t.lineJoin = Rr),
					(t[Kf] = 4),
					t[Vf](),
					t.save(),
					(t[pa] = Gc),
					t.beginPath(),
					t[_a](10.447, 26.005),
					t[la](18.847, 26.005),
					t.quadraticCurveTo(18.847, 26.005, 18.847, 26.005),
					t[la](18.847, 28.663),
					t.quadraticCurveTo(18.847, 28.663, 18.847, 28.663),
					t.lineTo(10.447, 28.663),
					t[Wc](10.447, 28.663, 10.447, 28.663),
					t.lineTo(10.447, 26.005),
					t.quadraticCurveTo(10.447, 26.005, 10.447, 26.005),
					t.closePath(),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					(t[pa] = $c),
					t[Sf](),
					t[_a](21.491, 29.443),
					t.bezierCurveTo(21.491, 29.935000000000002, 21.094, 30.338, 20.597, 30.338),
					t.lineTo(8.698, 30.338),
					t[da](8.201, 30.338, 7.8020000000000005, 29.936, 7.8020000000000005, 29.443),
					t[la](7.8020000000000005, 29.557000000000002),
					t.bezierCurveTo(7.8020000000000005, 29.063000000000002, 8.201, 28.662000000000003, 8.698, 28.662000000000003),
					t.lineTo(20.597, 28.662000000000003),
					t[da](21.093, 28.662000000000003, 21.491, 29.062, 21.491, 29.557000000000002),
					t[la](21.491, 29.443),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t.fillStyle = $c),
					t[Sf](),
					t[_a](0.789, 24.79),
					t.bezierCurveTo(0.789, 25.461, 1.334, 26.005, 2.0060000000000002, 26.005),
					t[la](27.289, 26.005),
					t[da](27.961000000000002, 26.005, 28.504, 25.461, 28.504, 24.79),
					t.lineTo(28.504, 23.267),
					t.lineTo(0.789, 23.267),
					t[la](0.789, 24.79),
					t.closePath(),
					t.fill(),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					(t[pa] = Xc),
					t[Sf](),
					t.moveTo(27.289, 6.912),
					t[la](2.006, 6.912),
					t.bezierCurveTo(1.3339999999999996, 6.912, 0.7889999999999997, 7.455, 0.7889999999999997, 8.126),
					t[la](0.7889999999999997, 23.227),
					t[la](28.503999999999998, 23.227),
					t[la](28.503999999999998, 8.126),
					t.bezierCurveTo(28.504, 7.455, 27.961, 6.912, 27.289, 6.912),
					t.closePath(),
					t[Tf](),
					t.stroke(),
					t.restore(),
					t[Vf](),
					t[Vf](),
					t.restore(),
					t.save(),
					t.restore(),
					t.restore(),
					t[Vf]();
				var i = t[Bo](5.54, 6.2451, 23.7529, 24.458);
				i[Wo](0, Hc),
					i.addColorStop(1, Yc),
					(t.fillStyle = i),
					t.beginPath(),
					t.moveTo(25.78, 8.671),
					t.lineTo(3.514, 8.671),
					t.bezierCurveTo(2.9819999999999998, 8.671, 2.549, 9.101999999999999, 2.549, 9.635),
					t[la](2.549, 21.466),
					t[la](26.743, 21.466),
					t.lineTo(26.743, 9.636),
					t[da](26.743, 9.102, 26.312, 8.671, 25.78, 8.671),
					t.closePath(),
					t.fill(),
					t[La](),
					t.restore(),
					t.restore(),
					t[Vf](),
					t[Vf](),
					(t[pa] = Gc),
					t[Sf](),
					t.moveTo(27.053, 33.602),
					t.lineTo(36.22, 33.602),
					t[Wc](36.22, 33.602, 36.22, 33.602),
					t[la](36.22, 36.501),
					t[Wc](36.22, 36.501, 36.22, 36.501),
					t[la](27.053, 36.501),
					t[Wc](27.053, 36.501, 27.053, 36.501),
					t[la](27.053, 33.602),
					t[Wc](27.053, 33.602, 27.053, 33.602),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t.fillStyle = $c),
					t[Sf](),
					t[_a](39.104, 37.352),
					t[da](39.104, 37.891, 38.67, 38.327, 38.13, 38.327),
					t[la](25.143, 38.327),
					t[da](24.602, 38.327, 24.166, 37.891, 24.166, 37.352),
					t[la](24.166, 37.477999999999994),
					t[da](24.166, 36.937, 24.602, 36.501, 25.143, 36.501),
					t[la](38.131, 36.501),
					t[da](38.671, 36.501, 39.105, 36.937, 39.105, 37.477999999999994),
					t[la](39.105, 37.352),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					(t.fillStyle = $c),
					t.beginPath(),
					t[_a](16.514, 32.275),
					t[da](16.514, 33.004999999999995, 17.107, 33.601, 17.839, 33.601),
					t[la](45.433, 33.601),
					t[da](46.166, 33.601, 46.758, 33.005, 46.758, 32.275),
					t.lineTo(46.758, 30.607999999999997),
					t[la](16.514, 30.607999999999997),
					t.lineTo(16.514, 32.275),
					t.closePath(),
					t[Tf](),
					t[La](),
					t.restore(),
					t.save(),
					(t.fillStyle = Xc),
					t[Sf](),
					t[_a](45.433, 12.763),
					t[la](17.839, 12.763),
					t.bezierCurveTo(17.107, 12.763, 16.514, 13.356, 16.514, 14.089),
					t.lineTo(16.514, 30.57),
					t[la](46.757999999999996, 30.57),
					t.lineTo(46.757999999999996, 14.088),
					t.bezierCurveTo(46.758, 13.356, 46.166, 12.763, 45.433, 12.763),
					t[zf](),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Sa](),
					t.save(),
					(i = t[Bo](21.6973, 12.0352, 41.5743, 31.9122)).addColorStop(0, Hc),
					i[Wo](1, Yc),
					(t.fillStyle = i),
					t[Sf](),
					t[_a](43.785, 14.683),
					t[la](19.486, 14.683),
					t[da](18.903000000000002, 14.683, 18.433, 15.153, 18.433, 15.735),
					t.lineTo(18.433, 28.649),
					t[la](44.837, 28.649),
					t[la](44.837, 15.734),
					t[da](44.838, 15.153, 44.367, 14.683, 43.785, 14.683),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t.restore(),
					t.save(),
					(t[Jc] = 0.5),
					t.beginPath(),
					t[_a](23.709, 36.33),
					t[la](4.232, 36.33),
					t[la](4.232, 27.199),
					t.lineTo(5.304, 27.199),
					t[la](5.304, 35.259),
					t.lineTo(23.709, 35.259),
					t.lineTo(23.709, 36.33),
					t[zf](),
					t[Tf](),
					t[La](),
					t.restore(),
					t[Sa]();
			},
		},
		subnetwork: {
			draw: function(t) {
				t.save(),
					t[Ta](0, 0),
					t[Sf](),
					t[_a](0, 0),
					t[la](60.75, 0),
					t[la](60.75, 42.125),
					t[la](0, 42.125),
					t[zf](),
					t[lc](),
					t[Ta](0, 0.26859504132231393),
					t[Na](0.6694214876033058, 0.6694214876033058),
					t[Ta](0, 0),
					(t[Oa] = pf),
					(t.lineCap = Lr),
					(t[xf] = Rr),
					(t.miterLimit = 4),
					t.save(),
					t[Vf](),
					t[Sa](),
					t.save(),
					t[Sa](),
					t[Sa](),
					t[Vf]();
				var i = t[Bo](43.6724, -2.7627, 43.6724, 59.3806);
				i.addColorStop(0, "rgba(159, 160, 160, 0.7)"),
					i[Wo](0.9726, kc),
					(t[pa] = i),
					t[Sf](),
					t[_a](61.732, 16.509),
					t[da](61.686, 16.509, 61.644, 16.515, 61.599, 16.515),
					t[da](58.126, 8.152000000000001, 49.884, 2.2650000000000006, 40.262, 2.2650000000000006),
					t.bezierCurveTo(29.567, 2.2650000000000006, 20.594, 9.545000000000002, 17.966, 19.415),
					t[da](9.09, 20.566, 2.229, 28.136, 2.229, 37.326),
					t.bezierCurveTo(2.229, 47.309, 10.322, 55.403000000000006, 20.306, 55.403000000000006),
					t[da](23.374000000000002, 55.403000000000006, 26.257, 54.633, 28.787, 53.28900000000001),
					t[da](31.197, 56.56000000000001, 35.067, 58.69000000000001, 39.442, 58.69000000000001),
					t.bezierCurveTo(42.555, 58.69000000000001, 45.408, 57.60900000000001, 47.669, 55.81200000000001),
					t[da](51.586, 58.57800000000001, 56.443999999999996, 60.238000000000014, 61.732, 60.238000000000014),
					t[da](74.64699999999999, 60.238000000000014, 85.116, 50.45000000000002, 85.116, 38.37400000000001),
					t[da](85.116, 26.298, 74.646, 16.509, 61.732, 16.509),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					(t[pa] = Gc),
					t.beginPath(),
					t[_a](34.966, 44.287),
					t[la](45.112, 44.287),
					t[Wc](45.112, 44.287, 45.112, 44.287),
					t.lineTo(45.112, 47.497),
					t[Wc](45.112, 47.497, 45.112, 47.497),
					t[la](34.966, 47.497),
					t[Wc](34.966, 47.497, 34.966, 47.497),
					t[la](34.966, 44.287),
					t[Wc](34.966, 44.287, 34.966, 44.287),
					t.closePath(),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					(t[pa] = Zc),
					t[Sf](),
					t[_a](48.306, 48.439),
					t.bezierCurveTo(48.306, 49.034, 47.824999999999996, 49.52, 47.226, 49.52),
					t[la](32.854, 49.52),
					t[da](32.253, 49.52, 31.771, 49.034000000000006, 31.771, 48.439),
					t[la](31.771, 48.578),
					t[da](31.771, 47.981, 32.253, 47.497, 32.854, 47.497),
					t.lineTo(47.226, 47.497),
					t[da](47.824999999999996, 47.497, 48.306, 47.98, 48.306, 48.578),
					t.lineTo(48.306, 48.439),
					t[zf](),
					t.fill(),
					t.stroke(),
					t.restore(),
					t[Vf](),
					(t[pa] = Uc),
					t.beginPath(),
					t.moveTo(23.302, 42.82),
					t.bezierCurveTo(23.302, 43.63, 23.96, 44.287, 24.772, 44.287),
					t.lineTo(55.308, 44.287),
					t[da](56.12, 44.287, 56.775, 43.629999999999995, 56.775, 42.82),
					t[la](56.775, 40.98),
					t.lineTo(23.302, 40.98),
					t[la](23.302, 42.82),
					t.closePath(),
					t.fill(),
					t[La](),
					t[Sa](),
					t.save(),
					(t[pa] = Xc),
					t.beginPath(),
					t[_a](55.307, 21.229),
					t[la](24.771, 21.229),
					t[da](23.959, 21.229, 23.301000000000002, 21.884, 23.301000000000002, 22.695),
					t.lineTo(23.301000000000002, 40.933),
					t[la](56.774, 40.933),
					t[la](56.774, 22.695),
					t.bezierCurveTo(56.774, 21.884, 56.119, 21.229, 55.307, 21.229),
					t[zf](),
					t[Tf](),
					t.stroke(),
					t[Sa](),
					t[Vf](),
					t[Vf](),
					t[Sa](),
					t[Vf](),
					t[Sa](),
					t[Sa](),
					t[Vf](),
					(i = t[Bo](29.04, 20.4219, 51.0363, 42.4181))[Wo](0, Hc),
					i[Wo](1, Yc),
					(t.fillStyle = i),
					t[Sf](),
					t[_a](53.485, 23.353),
					t.lineTo(26.592, 23.353),
					t[da](25.948999999999998, 23.353, 25.427, 23.873, 25.427, 24.517000000000003),
					t[la](25.427, 38.807),
					t[la](54.647, 38.807),
					t[la](54.647, 24.517000000000003),
					t[da](54.648, 23.873, 54.127, 23.353, 53.485, 23.353),
					t.closePath(),
					t[Tf](),
					t[La](),
					t[Sa](),
					t.restore(),
					t.restore();
			},
		},
	};
	for (var mG in xG) Yk(jc + mG, xG[mG]);
	function pG(t) {
		this.$layoutByAnchorPoint && this[zc] && ((t.x -= this[zc].x), (t.y -= this._oXY.y)),
			this[Vc] && nk(t, this.$rotate),
			(t.x += this[Kc] || 0),
			(t.y += this[Qc] || 0);
		var i = l$(this);
		return i ? nk(t, i) : t;
	}
	function wG(t) {
		var i = l$(this);
		return (
			i && nk(t, -i),
			(t.x -= this[Kc] || 0),
			(t.y -= this[Qc] || 0),
			this[Vc] && nk(t, -this[Vc]),
			this[qc] && this[zc] && ((t.x += this[zc].x), (t.y += this._oXY.y)),
			t
		);
	}
	function TG() {
		var t = this.$invalidateSize;
		this[tu] &&
			((this[tu] = !1),
			(this[iu] = !0),
			this._8X.setByRect(this._l7),
			this[nu] && this._8X[eu](this[nu]),
			this.$border && this._8X[eu](this[su]));
		var i = this._$q();
		if (i) var n = this.showPointer && this[hu];
		return (
			this[iu] &&
				this[qc] &&
				((this[iu] = !1),
				n && (t = !0),
				(this[zc] = tB(this[ru], this._8X[$t], this._8X.height)),
				(this._oXY.x += this._8X.x),
				(this[zc].y += this._8X.y)),
			i
				? (t &&
						((this[au] = !0),
						function(t) {
							var i = this._8X.x + this.$border / 2,
								n = this._8X.y + this[su] / 2,
								e = this._8X[$t] - this[su],
								s = this._8X[Xt] - this.$border,
								h = 0,
								r = 0;
							if (
								(this[ou] &&
									(vF(this[ou]) ? (h = r = this[ou]) : ((h = this[ou].x || 0), (r = this[ou].y || 0)),
									(h = Math.min(h, e / 2)),
									(r = Math.min(r, s / 2))),
								t &&
									((this[fu] = this._oXY.x - this.$offsetX + this[cu]),
									(this[uu] = this._oXY.y - this.$offsetY + this[_u]),
									!this._8X[zt](this[fu], this[uu])))
							) {
								var a = new yG(i, n, e, s, h, r, this[hu], this[fu], this[uu]);
								return (this[lu] = a._nE), this[lu][hf].set(i, n, e, s), void (this[du] = !0);
							}
							this._o3Shape && this[lu][Ot](), (this[lu] = i$[bu](i, n, e, s, h, r, this[lu])), this[lu][hf].set(i, n, e, s);
						}[m](this, n)),
				  this[au] &&
						((this[au] = !1),
						this[vu] && this[lu] && this._o3Shape[hf]
							? (this._oXackgroundGradient = jk[N].generatorGradient.call(this[vu], this[lu][hf]))
							: (this[yu] = null)))
				: (this.__nHPointer = !1),
			t
		);
	}
	function NG(t, i, n, e) {
		if (e && (t.width < 0 || t[Xt] < 0)) return (t.x = i), (t.y = n), void (t[$t] = t[Xt] = 0);
		i < t.x ? ((t.width += t.x - i), (t.x = i)) : i > t.x + t.width && (t[$t] = i - t.x),
			n < t.y ? ((t[Xt] += t.y - n), (t.y = n)) : n > t.y + t.height && (t[Xt] = n - t.y);
	}
	var AG = function() {
		this[gu] = !1;
		var t = this._hN;
		t[Ot]();
		var i = this.$border || 0,
			n = this._8X.x + i / 2,
			e = this._8X.y + i / 2,
			s = this._8X.width - i,
			h = this._8X[Xt] - i,
			r = pG.call(this, { x: n, y: e });
		NG(t, r.x, r.y, !0),
			NG(t, (r = pG[m](this, { x: n + s, y: e })).x, r.y),
			NG(t, (r = pG[m](this, { x: n + s, y: e + h })).x, r.y),
			NG(t, (r = pG.call(this, { x: n, y: e + h })).x, r.y),
			this[du] && NG(t, (r = pG[m](this, { x: this[fu], y: this._pointerY })).x, r.y),
			i && t[eu](i / 2);
	};
	function OG(t, i) {
		if (i)
			if (i._8X[mn]()) (t.$x = i.$x), (t.$y = i.$y);
			else {
				var n = function(t, i, n) {
					var e,
						s = t[ko],
						h = t[Eu] === M ? this[Eu] : t[Eu];
					return (
						this.$data instanceof cG && h
							? (((e = Sk[xu](s, this.$data, this[Ea], i, n, t[mu])).x *= this._l8), (e.y *= this._l9))
							: (((e = tB(s, this._8X[$t], this._8X[Xt])).x += this._8X.x), (e.y += this._8X.y)),
						pG.call(this, e)
					);
				}[m](i, t);
				(t.$x = n.x), (t.$y = n.y), (t._hostRotate = n[Mt]);
			}
		else (t.$x = 0), (t.$y = 0);
		t[gu] && AG[m](t);
	}
	function IG(t) {
		if (t.lineDash === M) {
			var i, n;
			if (t[pu]) (i = t[wu]), (n = t[pu]);
			else {
				var e;
				if (t[Tu] !== M) e = Tu;
				else {
					if (t[Nu] === M) return !1;
					e = Nu;
				}
				(n = function(t) {
					this[e] = t;
				}),
					(i = function() {
						return this[e];
					});
			}
			AF(t, Of, {
				get: function() {
					return i[m](this);
				},
				set: function(t) {
					n[m](this, t);
				},
			});
		}
		if (t.lineDashOffset === M) {
			var s;
			if (t[Au] !== M) s = Au;
			else {
				if (t[Ou] === M) return;
				s = Ou;
			}
			AF(t, Mf, {
				get: function() {
					return this[s];
				},
				set: function(t) {
					this[s] = t;
				},
			});
		}
	}
	function LG(t) {
		return t[Iu](function(t, i) {
			return 2 * t + i;
		}, 0);
	}
	function MG(t) {
		for (var i = [], n = 7; 0 <= n; n--) i.push(!!(t & (1 << n)));
		return i;
	}
	var SG = {
			_i0: !1,
			_lN: null,
			_dX: 0,
			_mK: -1,
			_mE: null,
			_fQ: function(t) {
				this._lN || ((this._lN = []), (this._kW = 2)), this._lN.push(t), this._eK(), this._mI();
			},
			_mI: function() {
				if (!this._mE) {
					var i = this;
					this._mE = setTimeout(function t() {
						!1 === i._eK() ? delete i._mE : (i._mE = setTimeout(t, i._i2()));
					}, this._i2());
				}
			},
			_i2: function() {
				return Math.max(20, this._lN[this._mK].delay);
			},
			_eK: function() {
				return this._gL(this._mK + 1);
			},
			_gL: function(t) {
				if (this._i0) t %= this._dX;
				else if (t >= this._lN.length) return !1;
				if (this._mK == t) return !1;
				this._mK = t;
				var i = this._lN[this._mK],
					n = i[Su];
				return (
					n || ((i._oZache = n = ok(this[$t], this[Xt])), n.g[qa](i[Qi], 0, 0), (n[Xa] = i[Xa])),
					(this._mA = n),
					(this[tu] = !0),
					this._eZ()
				);
			},
			_dZ: function() {
				if (this._lN) {
					if (((this._i0 = !0), (this._dX = this._lN.length), 1 == this._dX)) return this._eZ();
					this._mI();
				} else this._jQ();
			},
			_nN: function() {
				this._mE && (clearTimeout(this._mE), delete this._mE);
			},
			_eZ: function() {
				var t = this._dispatcher[ji];
				if (!t || !t[F]) return !1;
				for (var i = new nB(this, mo, po, this._mA), n = 0, e = t.length; n < e; n++) {
					var s = t[n];
					s[Ji]._lB && s[Ji]._lB[Du] ? (t[w](n, 1), n--, e--) : s.onEvent[m](s[Ji], i);
				}
				return 0 < t[F];
			},
			_oXN: function(t, i) {
				this._dispatcher.addListener(t, i), this._i0 && !this._mE && this._mI();
			},
			_6Z: function(t, i) {
				this._dispatcher.removeListener(t, i), this[Wa]._oZ7() || this._nN();
			},
			_jO: function() {
				this._nN(), this[Wa][Ot]();
			},
			_h5: function(t, i, n) {
				var e = this._mA[Pu];
				return e || (this._mA[Pu] = e = new vG(this._mA, 1)), e;
			},
		},
		DG = function(t) {
			(this.data = t),
				(this.len = this[Qi].length),
				(this.pos = 0),
				(this[Cu] = function() {
					if (this.pos >= this[Qi].length) throw new Error("Attempted to read past end of stream.");
					return 255 & t[Lu](this.pos++);
				}),
				(this[Ru] = function(t) {
					for (var i = [], n = 0; n < t; n++) i[L](this[Cu]());
					return i;
				}),
				(this[Fu] = function(t) {
					for (var i = "", n = 0; n < t; n++) i += String.fromCharCode(this.readByte());
					return i;
				}),
				(this[Bu] = function() {
					var t = this[Ru](2);
					return (t[1] << 8) + t[0];
				});
		},
		PG = function(s, h) {
			function r(t) {
				for (var i = [], n = 0; n < t; n++) i[L](s[Ru](3));
				return i;
			}
			function a() {
				var t, i;
				for (i = ""; (t = s[Cu]()), (i += s[Fu](t)), 0 !== t; );
				return i;
			}
			function i(t) {
				var i, n, e;
				switch (((t.label = s[Cu]()), t.label)) {
					case 249:
						(t.extType = ku),
							(function(t) {
								s[Cu]();
								var i = MG(s[Cu]());
								(t[Gu] = i.splice(0, 3)),
									(t[Va] = LG(i[w](0, 3))),
									(t[Wu] = i[$u]()),
									(t[Xu] = i[$u]()),
									(t.delayTime = s[Bu]()),
									(t[za] = s.readByte()),
									(t[Hu] = s[Cu]()),
									h.gce && h.gce(t);
							})(t);
						break;
					case 254:
						(t.extType = Yu), ((n = t)[Ju] = a()), h.com && h.com(n);
						break;
					case 1:
						(t[Zu] = Uu), (e = t), s.readByte(), (e[ju] = s[Ru](12)), (e[zu] = a()), h.pte && h.pte(e);
						break;
					case 255:
						(t[Zu] = Vu),
							(function(t) {
								var i, n;
								switch ((s[Cu](), (t[Ku] = s.read(8)), (t[Qu] = s[Fu](3)), t[Ku])) {
									case "NETSCAPE":
										(n = t),
											s[Cu](),
											(n.unknown = s[Cu]()),
											(n.iterations = s[Bu]()),
											(n[Hu] = s[Cu]()),
											h.app && h.app[qu] && h.app.NETSCAPE(n);
										break;
									default:
										((i = t).appData = a()), h.app && h.app[i[Ku]] && h.app[i[Ku]](i);
								}
							})(t);
						break;
					default:
						(t.extType = t_), ((i = t).data = a()), h[t_] && h.unknown(i);
				}
			}
			function n(t) {
				(t[to] = s[Bu]()), (t[Ka] = s[Bu]()), (t[$t] = s[Bu]()), (t[Xt] = s[Bu]());
				var i = t[$t] * t[Xt],
					n = MG(s[Cu]());
				(t[i_] = n[$u]()),
					(t[n_] = n.shift()),
					(t[e_] = n[$u]()),
					(t[Gu] = n[w](0, 2)),
					(t[s_] = LG(n[w](0, 3))),
					t[i_] && (t.lct = r(1 << (t[s_] + 1))),
					(t.lzwMinCodeSize = s[Cu]());
				var e = a();
				(t[Qa] = (function(i, e, t) {
					function n(t) {
						for (var i = 0, n = 0; n < t; n++) e[Lu](a >> 3) & (1 << (7 & a)) && (i |= 1 << n), a++;
						return i;
					}
					function s() {
						(_ = []), (u = i + 1);
						for (var t = 0; t < f; t++) _[t] = [t];
						(_[f] = []), (_[c] = null);
					}
					for (var h, r, a = 0, o = [], f = 1 << i, c = 1 + f, u = i + 1, _ = [], l = 0; (r = h), (h = n(u)), !(l++ > t); )
						if (h !== f) {
							if (h === c) break;
							if (h < _[F]) r !== f && _.push(_[r][B](_[h][0]));
							else {
								if (h !== _.length) throw new Error(Mu);
								_.push(_[r][B](_[r][0]));
							}
							o[L][b](o, _[h]), _.length === 1 << u && u < 12 && u++;
						} else s();
					return o;
				})(t[h_], e, i)),
					t[n_] &&
						(t[Qa] = (function(t, i) {
							for (
								var n, e, s = new Array(t[F]), h = t.length / i, r = [0, 4, 2, 1], a = [8, 8, 4, 2], o = 0, f = 0;
								f < 4;
								f++
							)
								for (var c = r[f]; c < h; c += a[f])
									(n = c), (e = t[S](o * i, (o + 1) * i)), s[w][b](s, [n * i, i][B](e)), o++;
							return s;
						})(t[Qa], t[$t])),
					h.img && h.img(t);
			}
			h = h || {};
			var e = function() {
				var t = {};
				switch (((t[r_] = s[Cu]()), String[a_](t[r_]))) {
					case "!":
						(t[wi] = o_), i(t);
						break;
					case ",":
						(t[wi] = Ha), n(t);
						break;
					case ";":
						(t[wi] = f_), h.eof && h.eof(t);
						break;
					default:
						throw new Error(c_ + t[r_].toString(16));
				}
				f_ !== t.type && setTimeout(e, 0);
			};
			!(function() {
				var t = {};
				if (((t.sig = s[Fu](3)), (t.ver = s.read(3)), u_ !== t.sig)) throw new Error(__);
				(t[$t] = s[Bu]()), (t[Xt] = s[Bu]());
				var i = MG(s.readByte());
				(t.gctFlag = i.shift()),
					(t[l_] = LG(i[w](0, 3))),
					(t.sorted = i[$u]()),
					(t.gctSize = LG(i.splice(0, 3))),
					(t.bgColor = s[Cu]()),
					(t.pixelAspectRatio = s.readByte()),
					t[d_] && (t.gct = r(1 << (t.gctSize + 1))),
					h.hdr && h.hdr(t);
			})(),
				setTimeout(e, 0);
		},
		CG = "";
	x[_e] &&
		x[_e](
			b_,
			function(t) {
				if (t.ctrlKey && t[v_] && t.altKey && 73 == t[y_]) {
					var i = QB[To] + g_ + QB[E_] + x_ + QB[m_] + p_ + QB[w_] + p_ + QB[T_] + CG;
					QB[N_](i);
				}
			},
			!1
		);
	var RG = A_;
	CG = O_ + decodeURIComponent(I_);
	var FG,
		BG,
		kG,
		GG = u,
		WG = L_,
		$G = M_,
		XG = GG[S_];
	function HG(t, i) {
		try {
			if (null == t || t[F] < 8) return;
			if (null == i || i[F] <= 0) return;
			for (var n = "", e = 0; e < i[F]; e++) n += i[Lu](e).toString();
			var s = Math[J](n[F] / 5),
				h = parseInt(n[D_](s) + n.charAt(2 * s) + n[D_](3 * s) + n.charAt(4 * s) + n[D_](5 * s), 10),
				r = Math[tr](i.length / 2),
				a = Math.pow(2, 31) - 1,
				o = parseInt(t.substring(t[F] - 8, t.length), 16);
			for (t = t[Kn](0, t[F] - 8), n += o; 10 < n[F]; )
				n = (parseInt(n[Kn](0, 10), 10) + parseInt(n.substring(10, n[F]), 10)).toString();
			n = (h * n + r) % a;
			var f = "",
				c = "";
			for (e = 0; e < t[F]; e += 2)
				(f = parseInt(parseInt(t[Kn](e, e + 2), 16) ^ Math.floor((n / a) * 255), 10)), (c += String[a_](f)), (n = (h * n + r) % a);
			return 0 | c[0] ? GG[P_ + WG + C_](c) : null;
		} catch (t) {}
	}
	function YG(t, i) {
		i = i || X_;
		try {
			kG[m](t, i, 666, 111);
		} catch (t) {}
	}
	XG &&
		((BG = GG[R_][F_]),
		XG[m](
			GG,
			function() {
				var t,
					i = RG;
				if (i) {
					i = (ZG = i)[C](V);
					for (var n = 0; n < i[F] && !((t = HG(i[n], BG)) && 8 <= t.split(p_)[F]); ) 1 == i[F] && (t = HG(i[n], B_)), n++;
					if (!t || t.split(p_).length < 8)
						return (
							(UG = !0), "" === BG || k_ == BG || G_ == BG ? ((jG = qG), void (JG = VG = !1)) : ((jG = qG), void (VG = !0))
						);
					if ((JG = t[C](p_))[3] == hH) {
						(VG = !1), 1 < JG[0] && (UG = !1);
						var e = JG[5];
						zG = e;
						var s = JG[6];
						jG = s;
					} else UG = !0;
				} else VG = !0;
			},
			W_
		),
		XG[m](
			GG,
			function() {
				var t = ZG;
				if (t) {
					var i;
					t = t.split(V);
					for (var n = 0; n < t[F] && !((i = aW(t[n], BG)) && 8 <= i[C](p_)[F]); ) 1 == t.length && (i = aW(t[n], B_)), n++;
					if (8 <= i[C](p_)[F]) return void (KG = !1);
				}
				KG = !(!BG || k_ == BG || G_ == BG);
			},
			$G
		),
		XG[m](
			GG,
			function() {
				ZG && ZG == RG && (QG = !1);
			},
			$_
		));
	var JG,
		ZG,
		UG = !0,
		jG = !0,
		zG = !0,
		VG = !0,
		KG = !0,
		QG = !0,
		qG = 2048;
	function tW() {
		if (UG) {
			var t = iX[N]._lD,
				e = YG;
			iX.prototype._lD = function() {
				t[b](this, arguments), e[m](this[H_], this.g);
			};
			var s = AW.prototype._iK;
			AW[N]._iK = function(t, i, n) {
				s[b](this, arguments), e[m](this, t);
			};
		}
	}
	function iW() {
		if (!0 !== zG && zG) {
			var t = zG.split(it);
			if (3 != t[F]) return void (c$.prototype._lD = null);
			3 * (365.2425 * (parseInt(t[0], 10) - 2e3 + 30) + 3 * (parseInt(t[1], 10) - 1) * 10 + parseInt(t[2], 10)) * 8 * 3 * 1200 * 1e3 <
				FG && (c$[N]._lD = null);
		}
	}
	function nW() {
		var t = 0 | jG;
		if (t) {
			var i = dB[N]._mD;
			dB[N]._mD = function() {
				return !(this._l5.length > t) && i[b](this, arguments);
			};
		}
	}
	function eW() {
		VG && (PF[N]._mD = PF.prototype._hE);
	}
	function sW() {
		if (KG) {
			var e = YG,
				s = AW[N]._iK;
			AW.prototype._iK = function(t, i, n) {
				s[b](this, arguments), e[m](this, t);
			};
		}
	}
	function hW() {
		if (QG) {
			var t = iX.prototype._lD,
				i = YG;
			iX.prototype._lD = function() {
				t[b](this, arguments), i[m](this._oXaseCanvas, this.g);
			};
		}
	}
	function rW() {
		JG === M && (AW[N]._kZ = JF[Zi]);
	}
	var aW = function(t, i) {
		return HG(t, i) || "";
	};
	if (x[Hn]) {
		var oW = x.createElement(Y_);
		(oW.style.display = qh),
			(oW[Ua] = function(t) {
				var i = t[J_][Z_];
				if ("" !== BG && k_ != BG && U_ != BG) {
					var s = i.String[a_];
					i[S_](function() {
						var n, e;
						(n = s),
							(e = [
								51,
								10,
								10,
								100,
								101,
								109,
								111,
								46,
								113,
								117,
								110,
								101,
								101,
								46,
								99,
								111,
								109,
								44,
								109,
								97,
								112,
								46,
								113,
								117,
								110,
								101,
								101,
								46,
								99,
								111,
								109,
								44,
								99,
								110,
								46,
								113,
								117,
								110,
								101,
								101,
								46,
								99,
								111,
								109,
								10,
								50,
								46,
								48,
								10,
								49,
								52,
								57,
								50,
								54,
								55,
								54,
								49,
								48,
								53,
								50,
								50,
								48,
								10,
								10,
								10,
							])[It](function(t, i) {
								e[i] = n(t);
							}),
							e[j_]("") != JG && (c$[N]._lD = null);
					}, $G),
						this[z_][z_][Cn](this[z_]);
				} else this[z_][z_][Cn](this[z_]);
			}),
			((fW = x[Hn](Yn))[Jn][$t] = V_),
			(fW[Jn][Xt] = V_),
			(fW[Jn][K_] = Ja),
			fW[ce](oW),
			x[Q_][ce](fW);
	}
	if (x.createElement) {
		var fW,
			cW = x[Hn](Y_);
		(cW[Jn].display = qh),
			(cW[Ua] = function(t) {
				var i = t.target[Z_];
				FG = i.Date.now();
				var n = i.CanvasRenderingContext2D[N];
				(kG = n.fillText), hF && (i = GG);
				var e = i.setTimeout;
				e.call(GG, eW, $G),
					e[m](GG, sW, q_),
					e[m](GG, rW, $_),
					e[m](GG, tW, tl),
					e[m](GG, nW, il),
					e[m](GG, hW, $G),
					e[m](GG, iW, $G),
					this[z_][z_][Cn](this[z_]);
			}),
			((fW = x.createElement(Yn)).style.width = V_),
			(fW[Jn][Xt] = V_),
			(fW[Jn][K_] = Ja),
			fW[ce](cW),
			x[Q_][ce](fW);
	}
	function uW(t, i, n, e, s, h, r, a) {
		if (!((t === n && i === e) || (s === r && h === a))) {
			var o = (a - h) * (n - t) - (r - s) * (e - i);
			if (0 != o) {
				var f = ((r - s) * (i - h) - (a - h) * (t - s)) / o,
					c = ((n - t) * (i - h) - (e - i) * (t - s)) / o;
				if (!(f < 0 || 1 < f || c < 0 || 1 < c)) {
					var u = t + f * (n - t),
						_ = i + f * (e - i);
					if (!((u === s && _ === h) || (u === r && _ === a))) return { x: u, y: _ };
				}
			}
		}
	}
	function _W(t, n) {
		var e;
		t[It](function(t) {
			var i;
			e &&
				(ei === t[wi] || (Array[W](t) && 2 === t[F])) &&
				n(2 <= (i = (i = e).points || i).length && i.slice(i[F] - 2, i.length), t.points || t, t),
				(e = t);
		});
	}
	var lW =
		((dW.prototype[Ot] = function() {
			this.currentPaths[F] = 0;
		}),
		(dW.prototype[nl] = function(t) {
			var u, _, l, d;
			(t[el] = null),
				this[sl].length &&
					((u = this.currentPaths),
					(_ = t),
					(l = new bW()),
					(d = []),
					_W(_, function(e, t, i) {
						var n;
						if (
							(l.set(e[0], e[1], t[0], t[1]),
							!(l.length <= 8) &&
								((d[F] = 0),
								u[It](function(t) {
									_W(t, function(t, i) {
										var n = l[hl](t[0], t[1], i[0], i[1]);
										if (n) {
											if (((n.distance = CF(e[0], e[1], n.x, n.y)), n.distance <= 4 || l[F] - n[Ct] <= 4)) return;
											d[L](n);
										}
									});
								}),
								d[F]))
						) {
							1 < d[F] &&
								d[rl](function(t, i) {
									return t[Ct] - i[Ct];
								});
							for (var s, h, r = [], a = 0, o = d.length; a < o; ) {
								var f = d[a++];
								(!s || 8 < f[Ct] - s.distance) && (s && c(), (h = f[Ct] - 4), r[L](new fG(ei, l[al](h, 0)))), (s = f);
							}
							c(),
								(_[el] = _[S](0)),
								(n = _.__lDSegments).splice[b](
									n,
									(function() {
										for (var t = 0, i = 0, n = arguments[F]; i < n; i++) t += arguments[i].length;
										var e = Array(t),
											s = 0;
										for (i = 0; i < n; i++) for (var h = arguments[i], r = 0, a = h[F]; r < a; r++, s++) e[s] = h[r];
										return e;
									})([_[el][v](i), 0], r)
								);
						}
						function c() {
							r[L](
								new fG(
									_i,
									l[al](h, 4, !0)
										[B](l[al](s[Ct] + 4, 4, !0))
										[B](l[al](s[Ct] + 4, 0))
								)
							);
						}
					})),
				this.currentPaths[L](t);
		}),
		dW);
	function dW() {
		this[sl] = [];
	}
	var bW =
		((vW[N].set = function(t, i, n, e) {
			(this.x1 = t),
				(this.x2 = n),
				(this.y1 = i),
				(this.y2 = e),
				(this.cx = 0.5 * (t + n)),
				(this.cy = 0.5 * (i + e)),
				(this._n5 = this._lL = M);
		}),
		Object.defineProperty(vW[N], F, {
			get: function() {
				return this._lL === M ? (this._lL = CF(this.x1, this.y1, this.x2, this.y2)) : this._lL;
			},
			enumerable: !0,
			configurable: !0,
		}),
		Object.defineProperty(vW[N], Fo, {
			get: function() {
				return this._n5 === M ? (this._n5 = Math[Rt](this.y2 - this.y1, this.x2 - this.x1)) : this._n5;
			},
			enumerable: !0,
			configurable: !0,
		}),
		(vW.prototype[al] = function(t, i, n) {
			return this[ol](t, i, n, !0);
		}),
		(vW[N][ol] = function(t, i, n, e) {
			n && Math.abs(this.angle) < Math.PI / 2 && (i = -i);
			var s = Math.sin(this[Fo]),
				h = Math.cos(this[Fo]),
				r = this.x1 + h * t - s * i,
				a = this.y1 + s * t + h * i;
			return e ? [r, a] : { x: r, y: a };
		}),
		(vW.prototype[hl] = function(t, i, n, e) {
			return r == typeof t
				? uW(this.x1, this.y1, this.x2, this.y2, t.x1, t.y1, t.x2, t.y2)
				: uW(this.x1, this.y1, this.x2, this.y2, t, i, n, e);
		}),
		vW);
	function vW() {}
	var yW = fl;
	pB(it + yW, { position: cl, userSelect: qh, outline: qh, transformOrigin: ul, "-webkit-tap-highlight-color": pf });
	var gW = _l;
	pB(it + gW, { width: ll, height: ll, position: dl, overflow: Ja, textAlign: Kt, outline: qh, tapHighlightColor: pf, userSelect: qh });
	var EW = bl;
	function CR(t, f) {
		return (function t(i) {
			var n = i[F],
				e = Math[T](n / 2);
			return n <= 1
				? i
				: (function(t, i) {
						for (var n = t[F], e = i[F], s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s; )
							r === n ? (h[o++] = i[a++]) : a === e || f(t[r], i[a]) <= 0 ? (h[o++] = t[r++]) : (h[o++] = i[a++]);
						return h;
				  })(t(i.slice(0, e)), t(i[S](e)));
		})(t);
	}
	pB(it + EW, { overflow: Ja, "text-align": Kt, "-webkit-tap-highlight-color": pf, outline: qh });
	var xW,
		mW = UR(
			function(t) {
				(this._oZJ = new wW()),
					(this._oM = new PF()),
					(this._9C = []),
					(this._e1 = []),
					(this[vl] = []),
					(this._9A = {}),
					(this.bounds = new JF()),
					(this._lS = new DW()),
					(this[yl] = new RW()),
					(this._lS[Yi] = function(t) {
						this._7Y(t);
					}[Ie](this)),
					this._e6(),
					this[gl](t);
			},
			{
				_oZ9: null,
				_kX: null,
				_oM: null,
				_e1: null,
				_lS: null,
				_dH: function(t) {
					return t ? (this._6Ws || (this[El] = {}), !this[El][t] && ((this[El][t] = !0), void this[xl]())) : this[xl]();
				},
				_oWS: function(t) {
					return this._6Ws && this[El][t];
				},
				isInvalidate: function() {
					return this._6W;
				},
				clear: function() {
					this._oM[Ot](), (this._e1[F] = 0), (this._9A = {}), (this._oXW = !1), this[xl]();
				},
				_7T: function() {
					this._dH(ml), this._2S();
				},
				_2S: function() {
					this._dH(pl);
				},
				invalidate: function(t) {
					(!t && this._6W) || ((this._6W = !0), this._nN || (this[wl] = requestAnimationFrame(this._h4.bind(this))));
				},
				_7V: function(t) {
					(this._nN = t) ? this[wl] && (cancelAnimationFrame(this[wl]), (this._lDingID = null)) : this._6W && this[xl](!0);
				},
				_h4: function() {
					(this[wl] = null), (this._6W = !1);
					var t = this[Le];
					this[Le] || (this._e4(), (this._oXW = !0)), this._e3(!t), this._3Q(), this._lD(), this._2B();
				},
				_68: !1,
				_e3: function(t) {
					(this._oZF = t || this.fullRefresh || this._68),
						(this._68 = !1),
						(t || this[El][ml]) && this._oWV(),
						(t || this[El][Tl]) && this._80(),
						this[Nl](t),
						this._4R(t),
						(this._6Ws = {});
				},
				_3Q: function() {
					this._e1.length = 0;
					var n = this[yl];
					if (
						(this._oM[It](function(t) {
							if (!1 !== t[Al]) {
								var i = this[Ol](t);
								n.intersects(i.x, i.y, i[$t], i[Xt]) && this._e1[L](t);
							}
						}, this),
						(this._e1 = this._kB(this._e1)),
						!this._oZF)
					) {
						var e = this[Il];
						(this[vl][F] = 0),
							e._oZH(this[yl]),
							e._kE() ||
								this._e1[It](function(t) {
									var i = this._oZA(t);
									e._g1(i.x, i.y, i[$t], i[Xt]) && this[vl].push(t);
								}, this);
					}
				},
				_kB: function(t) {
					return hF ? (t = CR(t, this[Ll])) : t[rl](this[Ll]), t;
				},
				_oWU: function(t, i) {
					return (t = t.zIndex || 0) - (i.zIndex || 0);
				},
				_oZA: function(t) {
					return t.boundingBox;
				},
				_lD: function() {
					if (this[Ml]) return this._fY(), this._7W(!0), void this.render(this._oZtx, this._e1);
					this._7W(this[Sl]);
					var t = this[Il],
						i = this._oZtx;
					i[Vf](),
						this[Sl] && (pW(i), i[vo](this[Sl][zr], this[Sl].x, this[Sl].y)),
						t._lV(i, this._g0[Ie](this)),
						this._fY(),
						this[Dl](i, this[vl]),
						i.restore();
				},
				_7W: function(t) {
					var i;
					this[Pl]
						? ((this._dHCanvasSizeFlag = !1), this._kX[Cl](this[ao], this._height))
						: t && ((i = this._kX).width = i.width);
				},
				_oWV: function() {
					var t = this.width,
						i = this[Xt];
					if (this._width == t && this._height == i) return !1;
					(this[ao] = t), (this[oo] = i), (this[Pl] = !0);
				},
				_4R: function(t) {
					if (!t && !this[El][pl]) return !1;
					var i = this._lS[Rl]([0, 0]),
						n = this[Na],
						e = this[ao] / n,
						s = this[oo] / n,
						h = this[Mt],
						r = this[yl];
					if (r.x == i[0] && r.y == i[1] && r[$t] == e && r[Xt] == s && r[Mt] == h) return !1;
					var a = r[lf]();
					return this._viewport.set(i[0], i[1], e, s, h, n), this._3J(this[yl], a, t), !0;
				},
				_3J: function(t, i, n) {
					this[Ml] || n || (this[Sl] = this._i8(i, t));
				},
				_7Y: function(t) {
					var i;
					this[Le] &&
						(this._nN &&
							(this[Fl] ? (this[Fl].transMatrix = i = OW.mul([], this._lS.m, OW.invert([], this[Fl].m))) : (i = this._lS.m),
							this._5Z(i)),
						this._dH(Tl),
						this._2S());
				},
				_5Z: function(t) {
					(this[Bl] = t), FW.setStyle(this._kX, kl, t ? Gl + t[j_](V) + ")" : "");
				},
				_80: function() {
					var t = this._oZurrentMatrix;
					if (
						((this._oZurrentMatrix = {
							tx: this._lS.m[4],
							ty: this._lS.m[5],
							m: this._lS.m[S](),
							scale: this._lS._iP(),
							rotate: this._lS._g5(),
						}),
						this.__oZssMatrix && this._5Z(null),
						!this[Ml])
					) {
						if ((this._2T(this._oZurrentMatrix, t), !t || t.scale != this[Fl].scale))
							return this._84(this[Fl][Na], t ? t[Na] : null), void (this[Ml] = !0);
						if (!t || t.rotate != this._oZurrentMatrix.rotate)
							return this._69(this[Fl][Mt], t ? t[Mt] : null), void (this[Ml] = !0);
						var i = t.m[4] - this[Fl].m[4],
							n = t.m[5] - this[Fl].m[5],
							e = this[Ur];
						(i *= e), (n *= e), (1e-4 < Math.abs(i - Math[tr](i)) || 1e-4 < Math.abs(n - Math[tr](n))) && (this[Ml] = !0);
					}
				},
				_81: function() {
					var i = this[hf],
						t = i[e]();
					i[Ot](),
						this._oM[It](function(t) {
							!1 !== t[Al] && i.add(this[Ol](t));
						}, this),
						i[Zi](t) || this._3R(i, t);
				},
				_3R: function(t, i) {},
				_oXW: !1,
				_e4: function() {},
				_oWW: function(t) {
					var i = t[Ur];
					t.scale(i, i), t[kl][b](t, this._lS.m);
				},
				render: function(i, t) {
					t &&
						t.length &&
						(i[Vf](),
						this._oWW(i),
						t[It](function(t) {
							if ((i[Vf](), !1 !== t[Wl]))
								try {
									t[Dl](i);
								} catch (t) {
									QB[et](t);
								}
							i.restore();
						}, this),
						i[Sa]());
				},
				setParent: function(t) {
					yF(t) && (t = x.getElementById(t)),
						this._oN != t &&
							(this._oN && this[$l] && (bF(this._oN, EW), this._oN[Cn](this[$l])),
							(this._oN = t),
							this._oN && (dF(this._oN, EW), this._oN[ce](this._83()), this._7T()));
				},
				_83: function() {
					return this._oZ9 || this._e6(), this._oZ9;
				},
				_e6: function() {
					var t = ok(!0);
					IG(t.g), (t[I] = yW);
					var i = x.createElement(Yn);
					return (
						i[_e](
							ts,
							function(t) {
								if (x[Xl] == this) return t[$] && t[$](), !1;
							}[Ie](i),
							!1
						),
						(i[I] = gW),
						i[ce](t),
						(i[Hl] = 0),
						(this._kX = t),
						(this._oZ9 = i),
						(this[Yl] = this._kX.getContext(Vr)),
						t
					);
				},
				toLogical: function(t, i) {
					return (
						t instanceof Object &&
							(LF(t) && (t = this._8N(t)), (t = Array[W](t) ? ((i = t[1] || 0), t[0] || 0) : ((i = t.y || 0), t.x || 0))),
						this._lS.reverseTransform([t, i])
					);
				},
				toCanvas: function(t, i) {
					return this._lS[kl]([t, i]);
				},
				_8N: function(t) {
					return (function(t, i) {
						t[Ge] && (t = t[Jl] && t[Jl].length ? t[Jl][0] : t.touches[0]);
						var n = t[Te] || 0,
							e = t.clientY || 0;
						uF && rF && (u[Zl] && n == t[Ul] && (n -= u.pageXOffset), u[jl] && e == t[zl] && (e -= u[jl]));
						var s = i[ee]();
						(n -= s[Kt]), (e -= s.top);
						var h = TB(i, s);
						return h && 1 !== h && ((n /= h), (e /= h)), { x: n, y: e };
					})(t, this[$l]);
				},
				_fR: function(t, i, n) {
					if (t[xo] instanceof Function) return t[xo](i, n);
					var e = this[Ol](t);
					return e
						? n
							? JF[qt](e.x, e.y, e[$t], e.height, i[0] - n, i[1] - n, n + n, n + n)
							: JF[qt](e.x, e.y, e[$t], e.height, i[0], i[1])
						: t;
				},
				hitTest: function(t, i) {
					return this._99(t, i);
				},
				_99: function(t, i) {
					(i = this[Vl](i)), (t = this[Kl](t));
					for (var n, e = this._e1.length; 0 <= --e; ) if (((n = this._e1[e]), this._fR(n, t, i))) return n;
				},
				_oWY: function(t) {
					return (t !== M && null !== t) || (t = DF.SELECTION_TOLERANCE), t ? t / this[Na] : 0;
				},
				getUIByMouseEvent: function(t, i) {
					if (t[Ql]) return this._oM[Tt](t[Ql]);
					var n = this._99(t, i);
					return (t[Ql] = n ? n.id : -1), n;
				},
				_9A: null,
				invalidateUI: function(t) {
					(this._9A[t.id] = t), this[xl]();
				},
				_oX0: function(t) {
					t.validate instanceof Function && t[Mo](this);
				},
				_e7: function(t, i) {
					t[ql] && this._i9(t[ql]);
					var n = t[Al];
					if (((t[Al] = this._fT(t, i)), !t.__k1)) return n;
					var e = t[ql];
					this[td](t);
					var s = this[Ol](t);
					t[ql] = { x: s.x, y: s.y, width: s[$t], height: s[Xt] };
					var h = t[Al] !== n || !JF[Zi](e, s);
					return h && t[ql] && this._i9(t[ql]), h;
				},
				_fT: function(t, i) {
					return !1 !== t[Wl];
				},
				_$s: function(i) {
					this._oM[It](function(t) {
						this._e7(t, i);
					}, this),
						(this._9A = {}),
						this._81();
				},
				_oZC: function(t) {
					var i = this.scale;
					if (t) return this._$s(i);
					var n = this._dHBoundsFlag;
					for (var e in ((this[id] = !1), this._9A)) {
						var s = this._9A[e];
						n ? this._e7(s, i) : (n = this._e7(s, i));
					}
					(this._9A = {}), n && this._81();
				},
				_9C: null,
				_2B: function() {
					if (!this._9C[F]) return !1;
					var t = this._9C;
					(this._9C = []),
						t[It](function(t) {
							try {
								var i = t.call,
									n = t.scope,
									e = t.delay;
								n instanceof Object ? (i = i[Ie](n)) : n && !e && (e = parseInt(n)), e ? setTimeout(i, e) : i();
							} catch (t) {}
						}, this),
						this._6W && this._h4();
				},
				_eJ: function(t, i, n) {
					this._9C[L]({ call: t, scope: i, delay: n }), this._6W || this._2B();
				},
				_4T: function(t, i) {
					for (var n = this._e1, e = 0, s = n[F]; e < s; e++) if (!1 === t.call(i, n[e])) return !1;
				},
				_fU: function(t, i) {
					this._oM[It](t, i);
				},
				_$x: function(t, i) {
					for (var n = this._e1, e = n.length - 1; 0 <= e; e--) if (!1 === t[m](i, n[e])) return !1;
				},
				_4U: function(t, i) {
					this._oM[nd](t, i);
				},
				_4V: function() {
					return this[hf];
				},
				_i3: function(t, i, n) {
					(t /= this.scale || 1), this._lT(t, i, n);
				},
				_lT: function(t, i, n) {
					if (this[Le] && (i === M || null === i)) {
						var e = this.toLogical(this[$t] / 2, this.height / 2);
						(i = e[0] || 0), (n = e[1] || 0);
					}
					return this._lS.scale(t, [i || 0, n || 0]);
				},
				_fW: function(t, i) {
					this._lS[Ta]([t, i], !0);
				},
				_oZD: function(t, i, n, e) {
					if (n == this[Na] && !1 !== e) {
						var s = this[Ur];
						s != (0 | s) && ((t = Math[tr](t * s) / s), (i = Math[tr](i * s) / s));
					}
					this._lS[ed]([t, i], n);
				},
				_lU: function(t, i) {
					return this._lT(this._fX, t, i);
				},
				_kC: function(t, i) {
					return this._lT(1 / this._fX, t, i);
				},
				_1O: function() {
					var t = this._4V();
					if (!t[mn]()) {
						var i = this[$t] / t.width,
							n = this[Xt] / t.height,
							e = Math.min(i, n);
						return { scale: (e = Math.max(this._i6, Math.min(this._i4, e))), cx: t.cx, cy: t.cy };
					}
				},
				_fX: 1.2,
				_i4: 10,
				_i6: 0.1,
				_oZF: !1,
				_84: function(t, i) {},
				_69: function(t, i) {},
				_2T: function() {},
				_fY: function() {
					(this[Sl] = null), this._oZJ._mW();
				},
				_g0: function(t) {
					var i = this._lS,
						n = this._kX.ratio,
						e = this[Na];
					if (!i._g5()) {
						var s = i.transform([t[0], t[1]]);
						return (s[0] *= n), (s[1] *= n), (n *= e), (s[2] = t[2] * n), (s[3] = t[3] * n), s;
					}
					var h = new JF(),
						r = i.transform([t[0], t[1]]);
					return (
						h.add(r[0], r[1]),
						(r = i[kl]([t[0] + t[2], t[1]])),
						h.add(r[0], r[1]),
						(r = i.transform([t[0], t[1] + t[3]])),
						h.add(r[0], r[1]),
						(r = i[kl]([t[0] + t[2], t[1] + t[3]])),
						h.add(r[0], r[1]),
						[h.x * n, h.y * n, h[$t] * n, h[Xt] * n]
					);
				},
				_i8: function(t, i) {
					var n = this._kX;
					if (n.width && n.height) {
						var e = i._43(t.x, t.y, t[$t], t[Xt]);
						if (e && e[$t] && e.width) {
							var s = this[Na] * this.ratio,
								h = this[Il],
								r = {};
							1e-6 < e.x && (r[Kt] = i._52(0, 0, e.x, i.height, s)),
								1e-6 < i[$t] - e[kt] && (r[kt] = i._52(e[kt], 0, i.width - e.right, i[Xt], s)),
								1e-6 < e.y && (r.top = i._52(e.x, 0, e[$t], e.y, s)),
								1e-6 < i.height - e.bottom && (r[Bt] = i._52(e.x, e.bottom, e.width, i[Xt] - e[Bt], s)),
								(function(t) {
									var i = !0;
									for (var n in t) {
										i = !1;
										break;
									}
									return i;
								})(r) || h._4W(r);
							var a = i._k2(t.x, t.y),
								o = (a[0] - e.x) * s,
								f = (a[1] - e.y) * s,
								c = e[$t] * s,
								u = e.height * s;
							(o = Math[tr](o)), (f = Math[tr](f)), (c = Math[tr](c)), (u = Math[tr](u));
							var _ = this[sd];
							return (
								_ || ((_ = this[sd] = x.createElement(zr)).g = _[Ao](Vr)),
								(_[$t] = c),
								(_[Xt] = u),
								pW(_.g),
								_.g[vo](n, o, f),
								{ x: (o = a[0] * s - o), y: (f = a[1] * s - f), canvas: _ }
							);
						}
					}
				},
				_o3: function(t, i, n, e) {
					this[Il]._oD(t, i, n, e);
				},
				_i9: function(t) {
					this[Il]._kF(t);
				},
			}
		);
	function pW(t) {
		t[
			(xW =
				xW ||
				("imageSmoothingEnabled" in CanvasRenderingContext2D[N]
					? "imageSmoothingEnabled"
					: "mozImageSmoothingEnabled" in CanvasRenderingContext2D[N]
					? "mozImageSmoothingEnabled"
					: "msImageSmoothingEnabled" in CanvasRenderingContext2D.prototype
					? "msImageSmoothingEnabled"
					: "webkitImageSmoothingEnabled" in CanvasRenderingContext2D.prototype
					? "webkitImageSmoothingEnabled"
					: "imageSmoothingEnabled"))
		] = !1;
	}
	Object.defineProperties(mW[N], {
		width: {
			get: function() {
				return this[$l].clientWidth;
			},
		},
		height: {
			get: function() {
				return this[$l][hd];
			},
		},
		rotate: {
			get: function() {
				return this._lS._g5();
			},
		},
		tx: {
			get: function() {
				return this._lS._9I()[0];
			},
		},
		ty: {
			get: function() {
				return this._lS._9I()[1];
			},
		},
		ratio: {
			get: function() {
				if (this._kX) return this._kX[Ur];
			},
		},
		scale: {
			get: function() {
				return this._lS._iP();
			},
			set: function(t) {
				this._i3(t);
			},
		},
		renderScale: {
			get: function() {
				return this.scale * this[Ur];
			},
		},
		uis: {
			get: function() {
				return this._oM;
			},
		},
		length: {
			get: function() {
				return this._oM[F];
			},
		},
		viewportBounds: {
			get: function() {
				return this[yl][rd]();
			},
		},
	});
	var wW = UR({
		constructor: function() {
			(this._iD = []), (this._l7 = new JF()), (this._iB = qR ? 20 : 50);
		},
		_iB: 20,
		_iD: null,
		_o4: !1,
		_l7: null,
		_mW: function() {
			(this._o4 = !1), (this._iD.length = 0), (this[ad] = null), this._l7.clear();
		},
		_kE: function() {
			return 0 == this._iD.length && !this[ad];
		},
		_oD: function(t, i, n, e) {
			n <= 0 || e <= 0 || this._iD[L]([t, i, n, e]);
		},
		_kF: function(t) {
			this._oD(t.x, t.y, t[$t], t[Xt]);
		},
		_4W: function(t) {
			var i = this._l7;
			for (var n in t) {
				var e = t[n][rd]();
				i.add(e);
			}
			this[ad] = t;
		},
		_oZH: function(t, i) {
			for (var n = [], e = this._iD, s = 0, h = e[F]; s < h; s++) {
				var r = e[s];
				t[qt](r[0], r[1], r[2], r[3]) && (n[L](r), this._l7.addRect(r[0], r[1], r[2], r[3]));
			}
			(this._iD = n), (this._o4 = i || n.length >= this._iB);
		},
		_g1: function(t, i, n, e) {
			if (!this._l7.intersectsRect(t, i, n, e)) return !1;
			if (this._o4) return !0;
			if (this[ad]) {
				var s = this._viewportClips;
				for (var h in s) if (s[h].intersects(t, i, n, e)) return !0;
			}
			for (var r, a = 0, o = this._iD.length; a < o; a++)
				if (((r = this._iD[a]), JF[qt](t, i, n, e, r[0], r[1], r[2], r[3]))) return !0;
			return !1;
		},
		_lV: function(t, i) {
			if (this._kE()) return !1;
			if ((t.beginPath(), this._o4))
				return TW(t, (r = i([this._l7.x, this._l7.y, this._l7.width, this._l7[Xt]]))[0], r[1], r[2], r[3]), void t[lc]();
			if (this[ad]) for (var n in this[ad]) TW(t, (r = this[ad][n][od])[0], r[1], r[2], r[3]);
			for (var e = this._iD, s = 0, h = e.length; s < h; s++) {
				var r;
				TW(t, (r = i(e[s]))[0], r[1], r[2], r[3]);
			}
			t[lc]();
		},
	});
	function TW(t, i, n, e, s) {
		(e = TF(i + e) - (i = wF(i))), (s = TF(n + s) - (n = wF(n))), t[fd](i, n, e, s), t.rect(i, n, e, s);
	}
	function wF(t) {
		return Math[J](t);
	}
	function TF(t) {
		return Math[T](t);
	}
	(wW[cd] = function(t, i, n, e) {
		return (
			t instanceof Object && ((i = t.y), (n = t.width), (e = t[Xt]), (t = t.x)),
			(n = TF(t + n) - (t = wF(t))),
			(e = TF(i + e) - (i = wF(i))),
			[t, i, n, e]
		);
	}),
		(wW._d0 = wF),
		(wW._gU = TF),
		(qB[ud] = _d),
		(qB[ld] = dd),
		(DF.NAVIGATION_TYPE = qB[ld]);
	var NW = UR({
		_lD: function() {
			JR(this, NW, bd, arguments), this[vd]._lD(), this._e8 && this._e8.clear();
		},
		_e8: null,
		enableCrossLine: function(t) {
			(this._68 = !0),
				t
					? this._e8 || (this._e8 = new lW())
					: this._e8 &&
					  ((this._e8 = null),
					  this._oM.forEach(function(t) {
							t[Qi][yd] && t.data.to && t[gd]._hY && t.path._hY[el] && (t[gd]._hY[el] = null);
					  }));
		},
		_oWU: function(t, i) {
			return (t = t[Ed].zIndex || 0) - (i[Ed][xd] || 0);
		},
		super: mW,
		constructor: function(t, i) {
			(this._mF = t),
				yF(i) && (i = x[md](i)),
				(i && i.tagName) || (i = x[Hn](Yn)),
				ZR(this, NW, [i]),
				(this[vd] = new iX(this, this[$l])),
				(this._iI = []),
				this._mF._8.addListener(this._1J, this),
				this._mF._1E[Vi](this[pd], this),
				this._mF._12[Vi](this._85, this),
				this._mF._$k[Vi](this._2X, this),
				this._mF._$n[Vi](this._3X, this),
				(this[wd] = {}),
				this._42(DF.NAVIGATION_TYPE, !0);
		},
		_5Z: function(t) {
			JR(this, NW, Td, arguments), this[vd]._5Z(t);
		},
		_iE: function(t) {
			if ((t.id || (t = this._oM[Tt](t)), !t)) return !1;
			this._oM.remove(t), t.destroy(), t.__l7 && this._i9(t[ql]), (this._dHBoundsFlag = !0);
		},
		_iG: function() {
			this._oM[It](function(t) {
				t[Ps]();
			}),
				this._oM.clear();
		},
		_fT: function(t, i) {
			var n = t[Qi] || t;
			return n._$p && ((n._$p = !1), (n._k1 = this._5V(n, i))), !1 !== n._k1;
		},
		_5V: function(t, i) {
			return !(!this._3T(t, i) || (this._mF._k1Filter && !1 === this._mF[Nd](t, i)));
		},
		_oX2: function(t) {
			return this._mF._3H == Z$(t);
		},
		_3T: function(t, i) {
			if (!1 === t[Wl]) return !1;
			if (!(t instanceof jW)) return this._mF._3H == Z$(t) && !t._f6;
			var n = t[Ad],
				e = t[Od];
			if (!n || !e) return !1;
			if (n == e && !t[Id]()) return !1;
			if (t[Ld]()) {
				var s = t.getEdgeBundle(!0);
				if (s && !s._fT(t, i)) return !1;
			}
			return !(!this._fT(n, i) || !this._fT(e, i));
		},
		_oZA: function(t) {
			if (t[Le]) return { x: t.$x + t[Md].x, y: t.$y + t[Md].y, width: t[Md].width, height: t[Md][Xt] };
		},
		_2V: function(t) {
			var i = this._mG(t);
			if (i) {
				var n = this[Ol](i);
				if (n) return new JF(n);
			}
		},
		_fR: function(t, i, n) {
			return t[xo](i[0], i[1], n);
		},
		hitTest: function(t, i) {
			var n = JR(this, NW, xo, arguments);
			if (n) {
				(t = this[Kl](t)), (i = this[Vl](i));
				var e = n[xo](t[0], t[1], i, !0);
				if (e instanceof c$) return e;
			}
			return n;
		},
		_3V: function(t) {
			return this.getUIByMouseEvent(t);
		},
		_7W: function(t) {
			JR(this, NW, Sd, arguments), this[vd]._k3(this[$t], this[Xt]);
		},
		_mX: 1,
		_e1: null,
		_9E: null,
		_9G: null,
		_oM: null,
		_oN: null,
		_kX: null,
		_oZJ: null,
		_6W: !1,
		_oXW: !1,
		_lS: null,
		_4T: function(t, i) {
			for (var n = this._e1, e = 0, s = n[F]; e < s; e++) if (!1 === t[m](i, n[e])) return !1;
		},
		_fU: function(t, i) {
			this._oM.forEach(t, i);
		},
		_$x: function(t, i) {
			for (var n = this._e1, e = n.length - 1; 0 <= e; e--) if (!1 === t.call(i, n[e])) return !1;
		},
		_4U: function(t, i) {
			this._oM.forEachReverse(t, i);
		},
		_3J: function(t, i, n) {
			JR(this, NW, Dd, arguments), (this._viewportChanged = { value: t });
		},
		_e4: function() {
			this._4R(!0),
				this[Pd] || ((this[Pd] = !0), this._mF && this._mF.originAtCenter && this._lS[ed]([this.width / 2, this[Xt] / 2]));
		},
		_h4: function() {
			if (!this[Du] && this._6W) {
				if (
					((this[wl] = null),
					(this._6W = !1),
					this._oXW &&
						this._mF &&
						this._mF._$p &&
						((this._mF._$p = !1),
						this._mF.forEach(function(t) {
							t.invalidateVisibility(!0);
						})),
					JR(this, NW, Cd, arguments),
					this[Rd])
				) {
					this._88 && this._88._lE();
					var t = this[Rd][Ni],
						i = this._9GChanged.old;
					(this[Rd] = null), this._mF._54(new eB(this._mF, Fd, t, i));
				}
				this[Bd] &&
					((this._viewportChanged = !1),
					this._88 && this._88._3J && this._88._3J(this[yl][$t] * this._viewport[Na], this[yl][Xt] * this._viewport[Na]),
					this._mF._54(new eB(this._mF, pl, this[yl])));
			}
		},
		_iI: null,
		_e7: function(t) {
			var i = t.$data;
			if (!t._1H && !i._6W && !i._$p) return !1;
			var n = t[tu];
			return JR(this, NW, kd, arguments) || n;
		},
		_oX0: function(t) {
			var i = t[Ed];
			i[Gd] && ((i[Gd] = !1), t._4F()), i[Rn] && i._jZ() && (t._5X(), (i[Rn] = !1)), (t._1H || i._6W) && ((i._6W = !1), t[Mo]());
		},
		_iJ: function(t, i) {
			var n = t[Ur];
			t.scale(n, n), t.transform[b](t, this._lS.m);
			for (var e = this[Wd], s = [], h = 0, r = i[F]; h < r; h++) {
				var a = i[h];
				this._e8 && a[Qi][yd] && a[Qi].to && this._e8[nl](a[gd]._hY), a._lD(t, e), a._l6 && a._l6[F] && s[L](a);
			}
			if (s.length) for (h = 0, r = s[F]; h < r; h++) s[h][$d](t, e);
		},
		render: function(t, i) {
			if (i.length) {
				if ((t.save(), qR))
					try {
						this._iJ(t, i);
					} catch (t) {}
				else this._iJ(t, i);
				t[Sa]();
			}
		},
		_iK: function(t, i, n) {
			var e, s;
			t[Vf](), t[Ta](-n.x * i, -n.y * i), t[Na](i, i);
			for (var h = this._oM._l5.slice(), r = [], a = 0, o = (h = this._kB(h)).length; a < o; a++)
				(e = h[a]).__k1 && ((s = this[Ol](e)), n[jt](s.x, s.y, s[$t], s[Xt]) && (e._lD(t, i), e._l6 && e._l6[F] && r[L](e)));
			if (r[F]) for (a = 0, o = r[F]; a < o; a++) r[a][$d](t, i);
			t[Sa]();
		},
		_10: function(t, i) {},
		_1P: function() {
			for (var t, i, n = this._oM._l5, e = new JF(), s = n[F] - 1; 0 <= s; s--)
				(t = n[s])._k1 && ((i = t[Md]), e.addRect(t.$x + i.x, t.$y + i.y, i[$t], i[Xt]));
			var h = this._9G;
			(this._9G = e)[Zi](h) || this._10(h, e);
		},
		_6A: function() {
			(this._e1[F] = 0), (this._9E = {});
		},
		_mZ: function() {
			this._mW();
		},
		_jO: function() {
			this._mW(), (this[Du] = !0), (this._6W = !1), this[vd][Ot](), (this._9C[F] = 0), this._88 && (this._88._jO(), delete this._88);
		},
		_mG: function(t) {
			return this._oM[Tt](t.id || t);
		},
		_$d: function(t) {
			return this._g2(t);
		},
		_iM: function(t, i) {
			var n = this[Xd](t, i);
			return { x: n[0], y: n[1] };
		},
		_g2: function(t, i) {
			var n = this[Kl](t, i);
			return { x: n[0], y: n[1] };
		},
		_$e: null,
		_3X: function(t) {
			var i = t.source,
				n = t[Qi];
			if (n)
				if (this[Le]) {
					if (gF(n)) for (h = 0, r = n[F]; h < r; h++) (s = n[h].id), (e = this._oM[Tt](s)) && ((e[Hd] = i[Nt](s)), e[Yd]());
					else {
						if (((s = n.id), !(e = this._oM.getById(s)))) return;
						(e[Hd] = i[Nt](s)), e.invalidateRender();
					}
					this._dH();
				} else {
					var e, s;
					if ((this._$e || (this._$e = {}), gF(n))) for (var h = 0, r = n[F]; h < r; h++) (s = n[h].id), (this._$e[s] = !0);
					else (s = n.id), (this._$e[s] = !0);
				}
		},
		_mF: null,
		_e9: function(t) {
			var i = t.uiClass;
			if (i) return new i(t, this._mF);
		},
		_1J: function(t) {
			if (!this._oXW) return !1;
			var i = t[pi],
				n = t[Ti];
			Jd == n && this._mF.invalidateVisibility(),
				Zd == n ? (this._iE(i.id), this._mC(i)) : Ud == n && i._jZ() && t[Ni] && this._6B(i);
			var e = this._oM.getById(i.id);
			e && e[Le] && e[jd](t) && this._dH();
		},
		_3Z: function(t) {
			var i = this._mG(t);
			i && (i[zd](), this._dH());
		},
		_oWL: function(t) {
			if (!this[Le]) return !1;
			switch (t[Ti]) {
				case uB.KIND_ADD:
					this._mC(t.data);
					break;
				case uB[rn]:
					this._iO(t[Qi]);
					break;
				case uB[an]:
					this._kH(t[Qi]);
			}
		},
		_mW: function() {
			(this._oZL = {}), this._iG(), this[Ot]();
		},
		_oZL: null,
		_mC: function(t) {
			var i = this._e9(t);
			i && (this._oM.add(i), this._oXW && (this[wd][t.id] = t), this._dH());
		},
		_iO: function(t) {
			if (Array[W](t)) {
				for (var i, n = [], e = 0, s = t[F]; e < s; e++) (i = t[e].id), n[L](i), delete this[wd][i];
				t = n;
			} else (t = t.id), delete this._oZL[t], (t = [t]);
			t[It](function(t) {
				this._iE(t);
			}, this),
				this._dH();
		},
		_kH: function(t) {
			this._mW();
		},
		_85: function(t) {
			if (!this[Le]) return !1;
			t[pi] instanceof QW &&
				!this[wd][t[pi].id] &&
				(t[Pi] && (this._3Z(t.oldValue), (t[Pi][Rn] = !0)), t[Ni] && (this._3Z(t.value), (t.value.__6W = !0)), this._6B(t[pi]));
		},
		_2X: function(t) {
			if (!this._oXW) return !1;
			t[pi] instanceof QW && !this[wd][t[pi].id] && this._6B(t.source);
		},
		_2Y: function(t) {
			if (t._edgeBundleInvalidateFlag) {
				var i = t[Vd](!0);
				if (!i) return (t._edgeBundleInvalidateFlag = !1), void t[Kd]();
				i[Mo](this._mF),
					i[Qd](function(t) {
						t.validateEdgeBundle();
					});
			}
		},
		_$s: function(t) {
			this._mF;
			var i,
				n = this._mF.graphModel,
				e = this._oM,
				s = [],
				h = 1;
			if (
				(n[qd](function(t) {
					if (t instanceof jW) return this._2Y(t), void s.push(t);
					(l = this._e9(t)) && (e.add(l), (t[tb] = h++));
				}, this),
				e[F])
			) {
				var r = e._l5;
				for (h = r[F] - 1; 0 <= h; h--) (l = r[h]), this._41(l, l[Ed], t);
			}
			h = 0;
			for (var a = s[F]; h < a; h++)
				if (((i = s[h]), (l = this._e9(i)))) {
					this._41(l, i, t), e.add(l);
					var o = i[Ad],
						f = i[Od],
						c = o.__mK || 0;
					o != f && (c = Math.max(c, f[tb] || 0)), (i.__mK = c);
				}
			if (
				(s.length &&
					e._l5[rl](function(t, i) {
						return t[Ed][tb] - i[Ed][tb];
					}),
				this._$e)
			) {
				var u = n[Bn];
				for (var _ in this._$e) {
					var l;
					u[Nt](_) && (l = e[Tt](_)) && (l.selected = !0);
				}
				this._$e = null;
			}
			this._81();
		},
		_oZC: function(t, i) {
			if (t) return this._$s();
			var n,
				e,
				s = this._dHBoundsFlag;
			for (var h in ((this[id] = !1), this._oZL)) {
				var r = this._oZL[h];
				r instanceof QW ? this._6B(r) : this._6D(r);
			}
			this[wd] = {};
			for (var a = this._oM._l5, o = [], f = a[F] - 1; 0 <= f; f--)
				(e = (n = a[f])[Ed]) instanceof jW ? (this._2Y(e), o[L](n)) : this._41(n, e, i) && !s && (s = !0);
			if (o.length) {
				f = 0;
				for (var c = o.length; f < c; f++) (n = o[f]), this._41(n, n.$data, i) && !s && (s = !0);
			}
			s && this._81();
		},
		_41: function(t, i, n) {
			if (i instanceof jW) return i[Gd] && ((i.__4F = !1), t._4F()), this._e7(t, n);
			if ((i[Rn] && i._jZ() && (t._5X(), (i[Rn] = !1)), this._e7(t, n))) {
				var e = this._4Z(i);
				return (
					e && (e[Rn] = !0),
					i[ib]() &&
						i.forEachEdge(function(t) {
							t[Gd] = !0;
						}, this),
					!0
				);
			}
		},
		_2Z: function(t, i) {
			var n = t[Ad],
				e = t.toAgent,
				s = i[nb](n.id);
			if (n == e) return s;
			var h = i.getIndexById(e.id);
			return Math.max(s, h);
		},
		_31: function(t, i) {
			var n = this[eb]._hC(t);
			return n ? i[nb](n.id) : 0;
		},
		_6B: function(t) {
			var i = this._oM,
				n = i.getById(t.id);
			if (!n) throw new Error(sb + t[To] + hb);
			var e = this._31(t, i),
				s = [n];
			t.hasChildren() &&
				LR(
					t,
					function(t) {
						t instanceof QW && (n = i[Tt](t.id)) && s[L](n);
					},
					this
				),
				this._4Y(i, e, s);
		},
		_6D: function(t) {
			var i = this._oM[Tt](t.id);
			if (i) {
				var n = this._2Z(t, this._oM);
				this._oM[rb](i, n);
			}
		},
		_4Y: function(i, n, t) {
			var e = new PF();
			function s(t) {
				e.add(t);
			}
			RR(
				t,
				function(t) {
					(n = i.setIndexAfter(t, n)), t.$data[ab](s);
				},
				this
			),
				0 != e[F] && e[It](this._6D, this);
		},
		_4Z: function(t) {
			var i = JW(t);
			return i && i[Ud] ? i : null;
		},
		_86: null,
		_88: null,
		_42: function(t, i) {
			if (!i && t == this._86) return !1;
			(this._86 = t),
				this._88 && (this._88._jO(), delete this._88),
				t != qB[ld] ? t != qB[ud] || (this._88 = new Q$(this, this[$l])) : (this._88 = new q$(this, this._oZ9));
		},
		_2T: function(t, i) {
			this._88 && this._88._lE(), this._mF._54(new eB(this._mF, kl, t, i));
		},
		_84: function(t, i) {
			this._mF._54(new eB(this._mF, Na, t, i));
		},
		_3R: function(t, i) {
			this[Rd] = { value: t, old: i };
		},
		_8A: function() {
			this._7T();
		},
	});
	Object[ob](NW[N], {
		_viewportBounds: {
			get: function() {
				return this[fb];
			},
		},
		_scale: {
			get: function() {
				return this.scale;
			},
			set: function(t) {
				this._i3(t);
			},
		},
		_tx: {
			get: function() {
				return this.tx;
			},
		},
		_ty: {
			get: function() {
				return this.ty;
			},
		},
		graphModel: {
			get: function() {
				return this._mF[cb];
			},
		},
	});
	var AW = mW,
		OW = {};
	function IW(t) {
		var n = [];
		return (
			t[It](function(t, i) {
				n[L](-t);
			}),
			n
		);
	}
	(OW.create = function() {
		return [1, 0, 0, 1, 0, 0];
	}),
		(OW.invert = function(t, i) {
			var n = i[0],
				e = i[1],
				s = i[2],
				h = i[3],
				r = i[4],
				a = i[5],
				o = n * h - e * s;
			return o
				? ((o = 1 / o),
				  (t[0] = h * o),
				  (t[1] = -e * o),
				  (t[2] = -s * o),
				  (t[3] = n * o),
				  (t[4] = (s * a - h * r) * o),
				  (t[5] = (e * r - n * a) * o),
				  t)
				: null;
		}),
		(OW[Bf] = function(t, i, n) {
			var e = i[0],
				s = i[1],
				h = i[2],
				r = i[3],
				a = i[4],
				o = i[5],
				f = n[0],
				c = n[1],
				u = n[2],
				_ = n[3],
				l = n[4],
				d = n[5];
			return (
				(t[0] = e * f + h * c),
				(t[1] = s * f + r * c),
				(t[2] = e * u + h * _),
				(t[3] = s * u + r * _),
				(t[4] = e * l + h * d + a),
				(t[5] = s * l + r * d + o),
				t
			);
		}),
		(OW.mul = OW[Bf]),
		(OW[Mt] = function(t, i, n) {
			var e = i[0],
				s = i[1],
				h = i[2],
				r = i[3],
				a = i[4],
				o = i[5],
				f = Math.sin(n),
				c = Math.cos(n);
			return (
				(t[0] = e * c + h * f), (t[1] = s * c + r * f), (t[2] = e * -f + h * c), (t[3] = s * -f + r * c), (t[4] = a), (t[5] = o), t
			);
		}),
		(OW[Na] = function(t, i, n) {
			var e = i[0],
				s = i[1],
				h = i[2],
				r = i[3],
				a = i[4],
				o = i[5],
				f = n[0],
				c = n[1];
			return (t[0] = e * f), (t[1] = s * f), (t[2] = h * c), (t[3] = r * c), (t[4] = a), (t[5] = o), t;
		}),
		(OW.translate = function(t, i, n) {
			var e = i[0],
				s = i[1],
				h = i[2],
				r = i[3],
				a = i[4],
				o = i[5],
				f = n[0],
				c = n[1];
			return (t[0] = e), (t[1] = s), (t[2] = h), (t[3] = r), (t[4] = e * f + h * c + a), (t[5] = s * f + r * c + o), t;
		}),
		(OW[kl] = function(t, i) {
			var n = i[0],
				e = i[1];
			return [n * t[0] + e * t[2] + t[4], n * t[1] + e * t[3] + t[5]];
		}),
		(OW[Rl] = function(t, i) {
			return OW[kl](OW.invert([], t), i);
		});
	var LW = Math.PI + Math.PI;
	function MW(t) {
		return (t %= LW) < 0 && (t += LW), t;
	}
	var SW = vF,
		DW = UR({
			equals: function(t) {
				if (!t || !Array[W](t)) return !1;
				for (var i = this.m, n = 0; n < i[F]; ) {
					if (i[n] != t[n]) return !1;
					++n;
				}
				return !0;
			},
			constructor: function(t) {
				(this.m = t || OW.create()), (this.im = []);
			},
			listener: null,
			_6W: !0,
			invalidate: function() {
				return (
					(this._6W = !0),
					(!this._oXackM || !this[Zi](this[ub])) &&
						(this[Yi] && this.listener({ target: this, kind: xl }), (this[ub] = this.m[S]()), this)
				);
			},
			validate: function() {
				return (this._6W = !1), OW[_b](this.im, this.m), this;
			},
			translate: function(t, i) {
				return (
					SW(t) && ((t = [t, i]), (i = arguments[2])),
					!1 !== i ? ((this.m[4] += t[0]), (this.m[5] += t[1])) : OW[Ta](this.m, this.m, t),
					this[xl]()
				);
			},
			translateTo: function(t, i) {
				return (
					SW(t) && ((t = [t, i]), (i = arguments[2])),
					i && ((i /= this._iP()), OW[Na](this.m, this.m, [i, i])),
					(this.m[4] = t[0]),
					(this.m[5] = t[1]),
					this[xl]()
				);
			},
			scale: function(t, i) {
				return (
					G == typeof t && (t = [t, t]),
					i
						? (OW.translate(this.m, this.m, i), OW.scale(this.m, this.m, t), OW[Ta](this.m, this.m, IW(i)))
						: OW[Na](this.m, this.m, t),
					this[xl]()
				);
			},
			rotate: function(t, i) {
				return (
					i ? (OW[Ta](this.m, this.m, i), OW[Mt](this.m, this.m, t), OW[Ta](this.m, this.m, IW(i))) : OW[Mt](this.m, this.m, t),
					this[xl]()
				);
			},
			transform: function(t) {
				return OW[kl](this.m, t);
			},
			reverseTransform: function(t) {
				return OW[kl](this._51(), t);
			},
			toString: function() {
				return Gl + this.m.join(V) + Q;
			},
			_51: function() {
				return this._6W && this.validate(), this.im;
			},
			_g3: function() {
				var t = this.m[0],
					i = this.m[1],
					n = this.m[2],
					e = this.m[3];
				return [Math[St](t * t + n * n), Math[St](i * i + e * e)];
			},
			_iP: function() {
				var t = this.m[0],
					i = this.m[2];
				return Math[St](t * t + i * i);
			},
			_9I: function() {
				return [this.m[4], this.m[5]];
			},
			_eA: function() {
				var t = this.m[0],
					i = this.m[1],
					n = this.m[2],
					e = this.m[3];
				return [MW(Math[Rt](i, e)), MW(Math[Rt](-n, t))];
			},
			_g5: function() {
				return MW(Math[Rt](this.m[1], this.m[3]));
			},
		});
	function PW(t, i, n, e, s, h, r, a) {
		var o = ((t * e - i * n) * (s - r) - (t - n) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r)),
			f = ((t * e - i * n) * (h - a) - (i - e) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r));
		if (isNaN(o) || isNaN(f)) return !1;
		if (n <= t) {
			if (!(n <= o && o <= t)) return !1;
		} else if (!(t <= o && o <= n)) return !1;
		if (e <= i) {
			if (!(e <= f && f <= i)) return !1;
		} else if (!(i <= f && f <= e)) return !1;
		if (r <= s) {
			if (!(r <= o && o <= s)) return !1;
		} else if (!(s <= o && o <= r)) return !1;
		if (a <= h) {
			if (!(a <= f && f <= h)) return !1;
		} else if (!(h <= f && f <= a)) return !1;
		return !0;
	}
	function CW(t, i, n, e) {
		return [t * e - i * n, t * n + i * e];
	}
	var RW = UR({
			constructor: function() {},
			x: 0,
			y: 0,
			width: 0,
			height: 0,
			rotate: 0,
			set: function(t, i, n, e, s, h) {
				return (
					(this.x = t),
					(this.y = i),
					(this[$t] = n),
					(this[Xt] = e),
					(this[Mt] = s),
					(this._oZos = Math.cos(s)),
					(this[Ft] = Math.sin(s)),
					(this[Na] = h),
					(this._globalBounds = null),
					this
				);
			},
			_k2: function(t, i) {
				return (t -= this.x), (i -= this.y), this.rotate ? CW(t, i, this._sin, this._oZos) : [t, i];
			},
			_9J: function(t) {
				var i = new JF();
				return (
					i.add(this._k2(t.x, t.y)),
					i.add(this._k2(t.x + t[$t], t.y)),
					i.add(this._k2(t.x, t.y + t[Xt])),
					i.add(this._k2(t.x + t.width, t.y + t[Xt])),
					i
				);
			},
			_iR: function(t, i) {
				if (this.rotate) {
					var n = CW(t, i, Math.sin(-this.rotate), Math.cos(-this[Mt]));
					(t = n[0]), (i = n[1]);
				}
				return [this.x + t, this.y + i];
			},
			_6E: function(t, i) {
				var n = this._k2(t, i);
				return (t = n[0]), (i = n[1]), 0 <= t && 0 <= i && t <= this[$t] && i <= this.height;
			},
			intersects: function(t, i, n, e) {
				if (!this.rotate) return JF.intersects(this.x, this.y, this.width, this[Xt], t, i, n, e);
				if (!n || !e) return this._6E(t, i);
				var s = this[rd]();
				if (!s.intersects(t, i, n, e)) return !1;
				for (var h = s[Fs], r = 0; r < h[F]; ) {
					var a = h[r];
					if (JF[zt](t, i, n, e, a[0], a[1])) return !0;
					r++;
				}
				var o = [
					[t, i],
					[t + n, i],
					[t, i + e],
					[t + n, i + e],
				];
				for (r = 0; r < o.length; ) {
					if (((a = o[r]), this._6E(a[0], a[1]))) return !0;
					r++;
				}
				return (function(t, i) {
					for (var n = 0, e = t.length; n < e; ) {
						for (var s = t[n], h = t[(n + 1) % e], r = 0; r < 4; ) {
							var a = i[r],
								o = i[(r + 1) % e];
							if (PW(s[0], s[1], h[0], h[1], a[0], a[1], o[0], o[1])) return !0;
							r++;
						}
						n++;
					}
					return !1;
				})(h, o);
			},
			getGlobalBounds: function() {
				return this._globalBounds || (this._globalBounds = this._8C(0, 0, this[$t], this[Xt])), this[lb];
			},
			_8C: function(t, i, n, e) {
				if (!this[Mt]) return new JF(this.x + t, this.y + i, n, e);
				var s = [],
					h = new JF(),
					r = this._iR(t, i);
				return (
					s[L](r),
					h.add(r[0], r[1]),
					(r = this._iR(t + n, i)),
					s.push(r),
					h.add(r[0], r[1]),
					(r = this._iR(t, i + e)),
					s.push(r),
					h.add(r[0], r[1]),
					(r = this._iR(t + n, i + e)),
					s[L](r),
					h.add(r[0], r[1]),
					(h[Fs] = s),
					h
				);
			},
			_52: function(t, i, n, e, s) {
				var h;
				if (this.rotate) {
					var r = this._iR(t, i);
					h = new RW().set(r[0], r[1], n, e, this[Mt], this[Na]);
				} else h = new RW().set(this.x + t, this.y + i, n, e, 0, this.scale);
				return (h[od] = [Math[tr](s * t), Math[tr](s * i), Math.round(s * n), Math[tr](s * e)]), h;
			},
			_43: function(t, i, n, e) {
				if (!this.rotate) {
					var s = JF[db](this.x, this.y, this.width, this[Xt], t, i, n, e);
					return s && s.offset(-this.x, -this.y), s;
				}
				var h = this._k2(t, i);
				return (t = h[0]), (i = h[1]), JF[db](0, 0, this[$t], this.height, h[0], h[1], n, e);
			},
			equals: function(t) {
				return this.x == t.x && this.y == t.y && this[$t] == t[$t] && this.height == t.height && this.rotate == t[Mt];
			},
			toString: function() {
				return this.x + V + this.y + V + this.width + V + this.height + V + this.rotate;
			},
			toJSON: function() {
				return { x: this.x, y: this.y, width: this[$t], height: this[Xt], rotate: this[Mt], scale: this[Na] };
			},
		}),
		FW = { setStyle: mB, setStyles: xB, addRule: pB, pre: EB };
	function BW(t, i, n) {
		if ((n = n || i[Od]) == t) return !1;
		var e = t.getEdgeBundle(n);
		return e || ((e = new jX(t, n)), (t._linkedNodes[n.id] = e)), e._kP(i, t);
	}
	function kW(t, i, n) {
		if ((n = n || i.toAgent) == t) return !1;
		var e = t[Vd](n);
		return e ? e._eI(i, t) : void 0;
	}
	function GW(t, i, n) {
		if ((n === M && (n = i[Od]), n != t)) {
			if ((t._8U || (t._8U = new PF()), !1 === t._8U.add(i))) return !1;
			t[oa]++;
		}
	}
	function WW(t, i, n) {
		if (!t._8U || !1 === t._8U.remove(i)) return !1;
		t[oa]--, kW(t, i, n);
	}
	function $W(t, i) {
		if (i[Ad] != t) {
			if ((t[bb] || (t[bb] = new PF()), !1 === t[bb].add(i))) return !1;
			t[vb]++;
		}
	}
	function XW(t, i) {
		if (!t._oW4 || !1 === t[bb][k](i)) return !1;
		t[vb]--, kW(i[Ad], i, t);
	}
	function HW(t, i, n, e) {
		(this[pi] = t), (this[Ti] = i), (this[Pi] = e), (this[Ni] = n), (this[Li] = qB[yb]);
	}
	function YW(t) {
		(this.id = ++VR), (this._dC = {}), (this._l3 = {}), t && (this[gb] = t);
	}
	function JW(t, i) {
		if ((i === M && (i = t instanceof jW), i)) {
			if (t[Eb]()) return null;
			var n = JW(t.from, !1);
			if (t[Id]()) return n;
			for (var e = JW(t.to, !1); null != n && null != e; ) {
				if (n == e) return n;
				if (n.isDescendantOf(e)) return e;
				if (e[xb](n)) return n;
				(n = JW(n, !1)), (e = JW(e, !1));
			}
			return null;
		}
		for (var s = t[Fi]; null != s; ) {
			if (s._jZ()) return s;
			s = s[Fi];
		}
		return null;
	}
	function ZW(t, i) {
		i[Fi] ? i[Fi][mb](i, i[Fi].childrenCount - 1) : t.roots[Sn](i, t.roots[F] - 1);
	}
	function UW(t, i) {
		i[Fi] ? i[Fi][mb](i, 0) : t.roots[Sn](i, 0);
	}
	XR(HW, eB),
		(YW.prototype = {
			_l3: null,
			getStyle: function(t) {
				return this._l3[t];
			},
			setStyle: function(t, i) {
				var n = this._l3[t];
				return !(n === i || (n && i && n.equals && n[Zi](i))) && this._oXR(t, i, new HW(this, t, i, n), this._l3);
			},
			putStyles: function(t, i) {
				for (var n in t) {
					var e = t[n];
					i ? (this._l3[n] = e) : this[pb](n, e);
				}
			},
			_$p: !0,
			invalidateVisibility: function(t) {
				(this._$p = !0),
					t ||
						(this instanceof QW &&
							this[ib]() &&
							this[ab](function(t) {
								t._$p = !0;
							}),
						this._jZ() &&
							this[p]() &&
							this[wb](function(t) {
								t.invalidateVisibility();
							}));
			},
			onParentChanged: function(t, i) {
				this[Tb]();
			},
			_jZ: function() {
				return !this._4B && this instanceof o$;
			},
			invalidate: function() {
				this[g](new nB(this, Nb, xl));
			},
			_dA: null,
			addUI: function(t, i) {
				if ((this._dA || (this._dA = new PF()), t.id || (t.id = ++VR), this._dA.containsById(t.id))) return !1;
				var n = { id: t.id, ui: t, bindingProperties: i };
				this._dA.add(n);
				var e = new nB(this, Nb, hn, n);
				return this.onEvent(e);
			},
			removeUI: function(t) {
				if (!this._dA) return !1;
				var i = this._dA[Tt](t.id || t);
				if (!i) return !1;
				this._dA.remove(i), this[g](new nB(this, Nb, k, i));
			},
			clearUIs: function() {
				this.bindingUIs &&
					this.bindingUIs[Lt]()[It](
						function(t) {
							this[Ab](t.ui);
						}[Ie](this)
					);
			},
			toString: function() {
				return this[gb] || this.id;
			},
			type: Ob,
			_4B: !1,
			_k1: !0,
			inGroup: function(t) {
				var i = JW(this);
				return i == t || (i && t instanceof o$ && i[xb](t));
			},
		}),
		XR(YW, _B),
		zR(YW[N], [Zd, To, xd, Ib]),
		OF(YW[N], {
			enableSubNetwork: {
				get: function() {
					return this._4B;
				},
				set: function(t) {
					if (this._4B != t) {
						var i = this._4B;
						(this._4B = t), this instanceof QW && this._$z(), this[g](new eB(this, Jd, t, i));
					}
				},
			},
			bindingUIs: {
				get: function() {
					return this._dA;
				},
			},
			styles: {
				get: function() {
					return this._l3;
				},
				set: function(t) {
					if (this._l3 != t) {
						for (var i in this._l3) i in t || (t[i] = M);
						this.putStyles(t), (this._l3 = t);
					}
				},
			},
		}),
		(QB[Lb] = JW);
	var jW = function(t, i, n) {
		(this.id = ++VR), (this._dC = {}), (this._l3 = {}), n && (this.$name = n), (this.$from = t), (this.$to = i), this[Mb]();
	};
	function zW(t, i) {
		return (
			(i = i || new PF()),
			t[ab](function(t) {
				i.add({ id: t.id, edge: t, fromAgent: t[Sb]._f6, toAgent: t.$to._f6 });
			}),
			t.forEachChild(function(t) {
				t instanceof QW && zW(t, i);
			}),
			i
		);
	}
	function VW(t, i, n) {
		if (t._hA)
			for (var e = t._hA; e; ) {
				if (!1 === i[m](n, e)) return !1;
				e = e._kK;
			}
	}
	function KW(t, i, n) {
		if (t._jV)
			for (var e = t._jV; e; ) {
				if (!1 === i[m](n, e)) return !1;
				e = e._lY;
			}
	}
	(jW.prototype = {
		$uiClass: S$,
		_lX: null,
		_kI: null,
		_lY: null,
		_kK: null,
		_g6: !1,
		type: Db,
		otherNode: function(t) {
			return t == this.from ? this.to : t == this.to ? this[yd] : void 0;
		},
		connect: function() {
			if (this._g6) return !1;
			if (!this.$from || !this.$to) return !1;
			if (((this._g6 = !0), this[Sb] != this.$to)) {
				!(function(t, i) {
					if ((t[vb]++, !t._jV)) return (t._jV = i), (t._l2 = i);
					(i._lX = t._l2), (t._l2._lY = i), (t._l2 = i);
				})(this.$to, this),
					(function(t, i) {
						if ((t[oa]++, !t._hA)) return (t._hA = i), (t._jW = i);
						(i._kI = t._jW), (t._jW._kK = i), (t._jW = i);
					})(this.$from, this),
					BW(this.$from, this, this.$to);
				var t,
					i = this.fromAgent,
					n = this[Od];
				i != n && (this.$from._f6 && (GW(i, this, n), (t = !0)), this.$to._f6 && ($W(n, this), (t = !0)), t && BW(i, this, n));
			} else this.$from._jX(this);
		},
		disconnect: function() {
			if (!this._g6) return !1;
			if (((this._g6 = !1), this[Sb] != this.$to)) {
				(h = this[Sb]),
					(r = this),
					h[oa]--,
					h._jW == r && (h._jW = r._kI),
					r._kI ? (r._kI._kK = r._kK) : (h._hA = r._kK),
					r._kK && (r._kK._kI = r._kI),
					(r._kI = null),
					(r._kK = null),
					kW(h, r, r.$to),
					(e = this.$to),
					(s = this),
					e._oXQ--,
					e._l2 == s && (e._l2 = s._lX),
					s._lX ? (s._lX._lY = s._lY) : (e._jV = s._lY),
					s._lY && (s._lY._lX = s._lX),
					(s._lX = null),
					(s._lY = null),
					kW(this[Sb], this, this.$to);
				var t,
					i = this[Ad],
					n = this[Od];
				i != n && (this.$from._f6 && (WW(i, this, n), (t = !0)), this.$to._f6 && (XW(n, this), (t = !0)), t && kW(i, this, n));
			} else this[Sb]._d7(this);
			var e, s, h, r;
		},
		isConnected: function() {
			return this._g6;
		},
		isInvalid: function() {
			return !this.$from || !this.$to;
		},
		isLooped: function() {
			return this[Sb] == this.$to;
		},
		getEdgeBundle: function(t) {
			return t ? this._32() : this[Id]() ? this[Sb]._49 : this[Sb].getEdgeBundle(this.$to);
		},
		hasEdgeBundle: function() {
			var t = this[Vd](!0);
			return t && 1 < t.edges.length;
		},
		_32: function() {
			var t = this[Ad],
				i = this[Od];
			return t === i ? (this.$from._f6 || this.$to._f6 ? null : this.$from._49) : t[Vd](i);
		},
		_oWG: null,
		hasPathSegments: function() {
			return this[Pb] && !this[Pb][mn]();
		},
		isBundleEnabled: function() {
			return this[Cb] && !this[Rb]() && !this[Fb];
		},
		firePathChange: function(t) {
			this[g](new eB(this, Bb, t));
		},
		addPathSegment: function(t, i, n) {
			var e = new fG(i || sG, t);
			this[Pb] || (this[Pb] = new PF()), this._oWG.add(e, n), this[kb](e);
		},
		addPathSegement: function() {
			return QB.log('change "edge.addPathSegement(...)" to "edge.addPathSegment(...)"'), this[Gb][b](this, arguments);
		},
		removePathSegmentByIndex: function(t) {
			return this[Wb](t);
		},
		removePathSegment: function(t) {
			if (!this[Pb]) return !1;
			vF(t) && (t = this._oWG.getByIndex(t)), t && (this[Pb].remove(t), this.firePathChange(t));
		},
		movePathSegment: function(i, n, t) {
			if (!this[Pb]) return !1;
			if (((i = i || 0), (n = n || 0), QB[ef](t))) {
				var e = this[Pb][mt](t);
				return !!e && (e[zs](i, n), void this[kb]());
			}
			RR(function(t) {
				t.move(i, n);
			}),
				this[kb]();
		},
		move: function(i, n) {
			if (!this[Pb]) return !1;
			this._oWG.forEach(function(t) {
				t.move(i, n);
			}, this),
				this.firePathChange();
		},
		validateEdgeBundle: function() {},
	}),
		XR(jW, YW),
		OF(jW[N], {
			pathSegments: {
				get: function() {
					return this[Pb];
				},
				set: function(t) {
					QB.isArray(t) && (t = new PF(t)), (this[Pb] = t), this[kb]();
				},
			},
			from: {
				get: function() {
					return this[Sb];
				},
				set: function(t) {
					if (this.$from != t) {
						var i = new eB(this, yd, t, this.$from);
						!1 !== this[d](i) && (this[$b](), (this.$from = t), this[Mb](), this.onEvent(i));
					}
				},
			},
			to: {
				get: function() {
					return this.$to;
				},
				set: function(t) {
					if (this.$to != t) {
						var i = new eB(this, Xb, t, this.$to);
						!1 !== this[d](i) && (this[$b](), (this.$to = t), this.connect(), this[g](i));
					}
				},
			},
			fromAgent: {
				get: function() {
					return this[Sb] ? this.$from._f6 || this.$from : null;
				},
			},
			toAgent: {
				get: function() {
					return this.$to ? this.$to._f6 || this.$to : null;
				},
			},
		}),
		zR(jW[N], [Fb, { name: Cb, value: !0 }, Fo]);
	var QW = function(t, i, n) {
		2 == arguments[F] && vF(t) && ((n = i), (i = t), (t = null)),
			(this.id = ++VR),
			(this._dC = {}),
			(this._l3 = {}),
			t && (this.$name = t),
			(this.$image = Hb),
			(this[ru] = UF[li]),
			(this[Yb] = { x: i || 0, y: n || 0 }),
			(this[Jb] = {});
	};
	function qW(t, i) {
		i[It](function(t) {
			var i = t.fromAgent,
				n = t[Od],
				e = (t = t[Zb])[Sb]._f6,
				s = t.$to._f6;
			i != n && (i && WW(i, t, n || t.$to), n && XW(n, t, i || t[Sb])),
				e != s && (e && GW(e, t, s || t.$to), s && $W(s, t, e || t[Sb]), BW(e || t.$from, t, s || t.$to));
		}, t);
	}
	(QW[N] = {
		$uiClass: D$,
		_f6: null,
		forEachEdge: function(t, i, n) {
			return !(!n && this._mB && !1 === this._mB[It](t, i)) && !1 !== KW(this, (e = t), (s = i)) && VW(this, e, s);
			var e, s;
		},
		forEachOutEdge: function(t, i) {
			return VW(this, t, i);
		},
		forEachInEdge: function(t, i, n) {
			return KW(this, t, i);
		},
		getEdges: function() {
			var i = [];
			return (
				this[ab](function(t) {
					i[L](t);
				}),
				i
			);
		},
		_jV: null,
		_hA: null,
		_l2: null,
		_jW: null,
		_oXQ: 0,
		_oW1: 0,
		hasInEdge: function() {
			return null != this._jV;
		},
		hasOutEdge: function() {
			return null != this._hA;
		},
		hasEdge: function() {
			return null != this._jV || null != this._hA || this.hasLoops();
		},
		linkedWith: function(t) {
			return t[yd] == this || t.to == this || t.fromAgent == this || t[Od] == this;
		},
		hasEdgeWith: function(t) {
			var i = this[Vd](t);
			return i && 0 < i.edges.length;
		},
		_mB: null,
		_49: null,
		hasLoops: function() {
			return this._mB && 0 < this._mB[F];
		},
		_jX: function(t) {
			return this._mB || ((this._mB = new PF()), (this._49 = new jX(this, this, this._mB))), this._49._kP(t);
		},
		_d7: function(t) {
			if (this._49) return this._49._eI(t);
		},
		getEdgeBundle: function(t) {
			return t == this ? this._49 : this[Jb][t.id] || t._linkedNodes[this.id];
		},
		_73: function() {
			return this[bb] && this._oW4[F];
		},
		_5Q: function() {
			return this._8U && this._8U[F];
		},
		_oW2: function() {
			return this._73() || this._5Q();
		},
		_8U: null,
		_oW4: null,
		_d9: function() {
			var t,
				i = this._f6,
				n = (t = this)[Fi] ? ((t = t.parent)._f6 ? t._f6 : t instanceof o$ && !1 === t._j1 ? t : null) : null;
			if (i != n) {
				var e = zW(this);
				this._oW7(n), qW(this, e);
			}
		},
		onParentChanged: function(t, i) {
			QB[Ub](this, QW, ln, arguments), this._d9();
		},
		_8V: null,
		_$z: function() {
			var t;
			if ((this._4B ? (t = null) : (t = this._f6) || !1 !== this._j1 || (t = this), this._8V == t)) return !1;
			if (((this._8V = t), this._hJ && this._hJ._l5[F]))
				for (var i, n = this._hJ._l5, e = 0, s = n.length; e < s; e++) (i = n[e]) instanceof QW && i[jb](t);
		},
		setLocation: function(t, i) {
			if (this[Yb] && this[Yb].x == t && this[Yb].y == i) return !1;
			var n;
			n = this.$location ? { x: this[Yb].x, y: this[Yb].y } : this.$location;
			var e = new eB(this, R_, n, { x: t, y: i });
			return (
				!1 !== this.beforeEvent(e) &&
				(this[Yb] ? ((this.$location.x = t), (this.$location.y = i)) : (this[Yb] = new BF(t, i)), this[g](e), !0)
			);
		},
		_f7: null,
		addFollower: function(t) {
			return null != t && (t[zb] = this);
		},
		removeFollower: function(t) {
			return !(!this._f7 || !this._f7[Zt](t)) && (t[zb] = null);
		},
		hasFollowers: function() {
			return this._f7 && !this._f7.isEmpty();
		},
		toFollowers: function() {
			return this[Vb]() ? this._f7[Lt]() : null;
		},
		clearFollowers: function() {
			this[Vb]() &&
				(this.toFollowers(),
				RR(this[Kb](), function(t) {
					t[zb] = null;
				}));
		},
		getFollowerIndex: function(t) {
			return this._f7 && this._f7[Zt](t) ? this._f7[v](t) : -1;
		},
		setFollowerIndex: function(t, i) {
			if (!this._f7 || !this._f7[Zt](t)) return -1;
			this._f7.setIndex(t, i);
		},
		getFollowerCount: function() {
			return this._f7 ? this._f7[F] : 0;
		},
		_oW5: function() {
			return this._f7 || (this._f7 = new PF()), this._f7;
		},
		isFollow: function(t) {
			if (!t || !this[Qb]) return !1;
			for (var i = this[Qb]; i; ) {
				if (i == t) return !0;
				i = i._host;
			}
			return !1;
		},
		_oW7: function(t) {
			if (t == this._f6) return !1;
			(this._f6 = t), this[Tb](), this._$z();
		},
		type: qb,
	}),
		XR(QW, YW),
		OF(QW[N], {
			loops: {
				get: function() {
					return this._mB;
				},
			},
			edgeCount: {
				get: function() {
					return this._oXQ + this[oa];
				},
			},
			agentNode: {
				get: function() {
					return this._f6 || this;
				},
			},
			host: {
				set: function(t) {
					if (this == t || t == this[Qb]) return !1;
					var i = new eB(this, zb, this[Qb], t);
					if (!1 === this[d](i)) return !1;
					var n = null,
						e = null,
						s = this._host;
					return (
						(null == t || ((n = new eB(t, tv, null, this)), !1 !== t[d](n))) &&
						(null == s || ((e = new eB(s, iv, null, this)), !1 !== s[d](e))) &&
							(null != (this[Qb] = t) && t._oW5().add(this),
							null != s && s[nv]()[k](this),
							this[g](i),
							null != t && t[g](n),
							null != s && s[g](e),
							!0)
					);
				},
				get: function() {
					return this[Qb];
				},
			},
		}),
		zR(QW[N], [R_, ml, mo, Mt, ev]),
		OF(QW[N], {
			x: {
				get: function() {
					return this.location.x;
				},
				set: function(t) {
					t != this[R_].x && (this[R_] = new BF(t, this.location.y));
				},
			},
			y: {
				get: function() {
					return this[R_].y;
				},
				set: function(t) {
					t != this.location.y && (this[R_] = new BF(this[R_].x, t));
				},
			},
		});
	var t$ = function(t, i) {
		t instanceof cG && ((i = t), (t = M)),
			HR(this, t$, [t]),
			(this[gd] = i || new cG()),
			(this[ev] = null),
			(this.uiClass = tX),
			DF.SHAPENODE_STYLES || ((DF.SHAPENODE_STYLES = {}), (DF[sv][v$[hv]] = !1)),
			this[rv](DF.SHAPENODE_STYLES);
	};
	(t$.prototype = {
		$uiClass: tX,
		type: av,
		moveTo: function(t, i) {
			this[gd][_a](t, i), this.firePathChange();
		},
		lineTo: function(t, i) {
			this[gd][la](t, i), this[kb]();
		},
		quadTo: function(t, i, n, e) {
			this[gd][ov](t, i, n, e), this[kb]();
		},
		curveTo: function(t, i, n, e, s, h) {
			this.path[fv](t, i, n, e, s, h), this.firePathChange();
		},
		arcTo: function(t, i, n, e, s) {
			this[gd][ua](t, i, n, e, s), this[kb]();
		},
		closePath: function() {
			this[gd][zf](), this[kb]();
		},
		clear: function() {
			this.path[Ot](), this.firePathChange();
		},
		removePathSegmentByIndex: function(t) {
			!1 !== this.path.removePathSegment(t) && this[kb]();
		},
		firePathChange: function() {
			(this[gd]._6W = !0), this[g](new eB(this, Bb));
		},
		addPathSegment: function(t, i, n) {
			this[gd].add(new fG(i || sG, t), n), this[kb]();
		},
	}),
		XR(t$, QW),
		OF(t$[N], {
			path: {
				get: function() {
					return this[mo];
				},
				set: function(t) {
					this[mo] = t;
				},
			},
			pathSegments: {
				get: function() {
					return this[gd].segments;
				},
				set: function(t) {
					(this[gd].segments = t || []), this.firePathChange();
				},
			},
			length: {
				get: function() {
					return this.path[F];
				},
			},
		}),
		(QB[cv] = t$);
	var i$ = {
		_lZ: {},
		register: function(t, i) {
			i$._lZ[t] = i;
		},
		getShape: function(t, i, n, e, s, h) {
			e === M && ((e = i), (s = n), (n = i = 0)), (e = e || 50), (s = s || 50);
			var r = i$._lZ[t];
			if (r) return r[uv] instanceof Function ? r[uv](i, n, e, s, h) : r;
		},
		getRect: function(t, i, n, e, s, h, r) {
			return (
				t instanceof Object && $t in t && ((i = t.y), (n = t[$t]), (e = t[Xt]), (s = t.rx), (h = t.ry), (r = t.path), (t = t.x)),
				n$(r || new cG(), t, i, n, e, s, h)
			);
		},
		getAllShapes: function(t, i, n, e, s) {
			var h = {};
			for (var r in i$._lZ) {
				var a = i$.getShape(r, t, i, n, e, s);
				a && (h[r] = a);
			}
			return h;
		},
		createRegularShape: function(t, i, n, e, s) {
			return h$(t, i, n, e, s);
		},
	};
	function n$(t, i, n, e, s, h, r) {
		return (
			h || r
				? ((h = h || 0),
				  (r = r === M ? h : r || 0),
				  (h = Math.min(h, e / 2)),
				  (r = Math.min(r, s / 2)),
				  t[_a](i + h, n),
				  t[la](i + e - h, n),
				  t[ov](i + e, n, i + e, n + r),
				  t[la](i + e, n + s - r),
				  t[ov](i + e, n + s, i + e - h, n + s),
				  t[la](i + h, n + s),
				  t[ov](i, n + s, i, n + s - r),
				  t[la](i, n + r),
				  t.quadTo(i, n, i + h, n))
				: (t[_a](i, n), t[la](i + e, n), t[la](i + e, n + s), t[la](i, n + s)),
			t.closePath(),
			t
		);
	}
	function e$(t, i, n, e, s) {
		i instanceof wk && ((e = i[$t]), (s = i[Xt]), (n = i.cy - s / 2), (i = i.cx - e / 2));
		var h = (e / 2) * 0.5522848,
			r = (s / 2) * 0.5522848,
			a = i + e,
			o = n + s,
			f = i + e / 2,
			c = n + s / 2;
		return (
			t[_a](i, c),
			t[fv](i, c - r, f - h, n, f, n),
			t[fv](f + h, n, a, c - r, a, c),
			t[fv](a, c + r, f + h, o, f, o),
			t[fv](f - h, o, i, c + r, i, c),
			t
		);
	}
	function s$(t, i, n, e, s, h) {
		return t.moveTo(i, n), t[la](i + e, n + s / 2), t.lineTo(i, n + s), h || (t.lineTo(i + 0.25 * e, n + s / 2), t[zf]()), t;
	}
	function h$(t, i, n, e, s) {
		if (!t || t < 3) throw new Error("edge number must greater than 2");
		(t |= 0), (e = e || 50), (s = s || 0), (i = i || 0), (n = n || 0);
		for (var h, r, a = 0, o = (2 * Math.PI) / t, f = new cG(); a < t; )
			(h = i + e * Math.cos(s)), (r = n + e * Math.sin(s)), a ? f.lineTo(h, r) : f[_a](h, r), ++a, (s += o);
		return f.closePath(), f;
	}
	function r$(t, i) {
		HR(this, r$, arguments), (this[_v] = !0);
	}
	function a$() {
		HR(this, a$), (this._$t = new cB());
	}
	!(function() {
		var t, i, n, e, s, h, r, a, o, f, c, u, _, l, d;
		i$[lv](qB.SHAPE_CIRCLE, e$(new cG(), 0, 0, 100, 100)),
			i$.register(qB[dv], n$(new cG(), 0, 0, 100, 100)),
			i$[lv](qB.SHAPE_ROUNDRECT, n$(new cG(), 0, 0, 100, 100, 20, 20)),
			i$[lv](
				qB.SHAPE_STAR,
				((i = 2 * 100),
				(n = 2 * 100),
				(e = 50 + 0),
				(s = 50 + 0),
				(t = new cG())[_a](e - i / 4, s - n / 12),
				t[la](0 + 0.306 * 100, 57.9),
				t.lineTo(e - i / 6, s + n / 4),
				t.lineTo(50, 73.3),
				t[la](e + i / 6, s + n / 4),
				t[la](69.3, 57.9),
				t.lineTo(e + i / 4, s - n / 12),
				t[la](61.1, 33.2),
				t[la](0 + e, s - n / 4),
				t[la](0 + 0.388 * 100, 33.2),
				t[zf](),
				t)
			),
			i$.register(
				qB.SHAPE_TRIANGLE,
				((r = 0), (a = 100), (h = new cG()).moveTo(0, r), h[la](100, r + a / 2), h.lineTo(0, r + a), h[zf](), h)
			),
			i$.register(qB.SHAPE_PENTAGON, h$(5)),
			i$.register(qB[bv], h$(6)),
			i$[lv](
				qB.SHAPE_DIAMOND,
				((f = 0),
				(c = 100),
				(o = new cG()).moveTo(0, f + c / 2),
				o.lineTo(50, f),
				o[la](100, f + c / 2),
				o[la](50, f + c),
				o[zf](),
				o)
			),
			i$[lv](
				qB.SHAPE_HEART,
				((u = new cG())[_a](75, 40),
				u[fv](75, 37, 70, 25, 50, 25),
				u[fv](20, 25, 20, 62.5, 20, 62.5),
				u[fv](20, 80, 40, 102, 75, 120),
				u[fv](110, 102, 130, 80, 130, 62.5),
				u.curveTo(130, 62.5, 130, 25, 100, 25),
				u[fv](85, 25, 75, 37, 75, 40),
				u)
			),
			i$[lv](qB[vv], ((_ = new cG())[_a](20, 0), _[la](80, 0), _[la](100, 100), _[la](0, 100), _[zf](), _)),
			i$.register(qB[yv], ((l = new cG())[_a](100, 0), l[la](100, 80), l.lineTo(0, 100), l.lineTo(0, 20), l.closePath(), l)),
			i$[lv](qB[gv], ((d = new cG())[_a](20, 0), d.lineTo(100, 0), d[la](80, 100), d[la](0, 100), d[zf](), d));
		var b,
			v,
			y,
			g,
			E,
			x,
			m,
			p,
			w = new cG();
		w[_a](20, 0),
			w.lineTo(40, 0),
			w[la](40, 20),
			w[la](60, 20),
			w[la](60, 40),
			w[la](40, 40),
			w[la](40, 60),
			w[la](20, 60),
			w[la](20, 40),
			w[la](0, 40),
			w[la](0, 20),
			w.lineTo(20, 20),
			w[zf](),
			i$.register(qB[Ev], w),
			i$.register(qB[xv], s$(new cG(), 0, 0, 100, 100)),
			i$[lv](
				qB[mv],
				((b = new cG())[_a](43, 23),
				b[la](28, 10),
				b[la](37, 2),
				b[la](63, 31),
				b[la](37, 59),
				b[la](28, 52),
				b[la](44, 38),
				b[la](3, 38),
				b[la](3, 23),
				b[zf](),
				b)
			),
			i$[lv](
				qB[pv],
				((v = new cG())[_a](1, 8),
				v[la](7, 2),
				v[la](32, 26),
				v[la](7, 50),
				v[la](1, 44),
				v[la](18, 26),
				v[zf](),
				v[_a](27, 8),
				v[la](33, 2),
				v[la](57, 26),
				v[la](33, 50),
				v[la](27, 44),
				v[la](44, 26),
				v[zf](),
				v)
			),
			i$[lv](
				qB.SHAPE_ARROW_3,
				((y = new cG()).moveTo(0, 15),
				y[la](23, 15),
				y[la](23, 1),
				y[la](47, 23),
				y[la](23, 43),
				y.lineTo(23, 29),
				y.lineTo(0, 29),
				y[zf](),
				y)
			),
			i$[lv](
				qB[wv],
				((g = new cG())[_a](0, 21),
				g[la](30, 21),
				g[la](19, 0),
				g.lineTo(25, 0),
				g[la](47, 25),
				g.lineTo(25, 48),
				g[la](19, 48),
				g[la](30, 28),
				g.lineTo(0, 28),
				g[zf](),
				g)
			),
			i$[lv](qB.SHAPE_ARROW_5, ((E = new cG())[_a](0, 0), E.lineTo(34, 24), E[la](0, 48), E.lineTo(14, 24), E.closePath(), E)),
			i$.register(
				qB[Tv],
				((x = new cG())[_a](20, 0),
				x.lineTo(34, 14),
				x[la](20, 28),
				x[la](22, 18),
				x[la](1, 25),
				x[la](10, 14),
				x.lineTo(1, 3),
				x.lineTo(22, 10),
				x[zf](),
				x)
			),
			i$[lv](
				qB.SHAPE_ARROW_7,
				((m = new cG()).moveTo(4, 18),
				m.lineTo(45, 18),
				m[la](37, 4),
				m[la](83, 25),
				m[la](37, 46),
				m.lineTo(45, 32),
				m[la](4, 32),
				m.closePath(),
				m)
			),
			i$[lv](
				qB.SHAPE_ARROW_8,
				((p = new cG())[_a](17, 11),
				p[la](27, 11),
				p.lineTo(42, 27),
				p[la](27, 42),
				p[la](17, 42),
				p[la](28, 30),
				p[la](4, 30),
				p[la](4, 23),
				p[la](28, 23),
				p[zf](),
				p)
			),
			i$[lv](qB.SHAPE_ARROW_OPEN, s$(new cG(), 0, 0, 100, 100, !0));
	})(),
		(r$.prototype = { type: Nv }),
		XR(r$, t$),
		(QB.Bus = r$),
		(a$[N] = {
			_hC: function(t) {
				var i,
					n = t._lB,
					e = (i = n ? n._hJ : this[Mn])[v](t);
				if (e < 0) throw new Error(Fn + t + "' not exist in the box");
				for (; 0 <= e; ) {
					if (0 == e) return n instanceof QW ? n : null;
					--e;
					var s = i.getByIndex(e);
					if ((s = MR(s))) return s;
				}
				return null;
			},
			forEachNode: function(i, n) {
				this[It](function(t) {
					if (t instanceof QW && !1 === i[m](n, t)) return !1;
				});
			},
			_3H: null,
		}),
		XR(a$, dB),
		OF(a$.prototype, {
			propertyChangeDispatcher: {
				get: function() {
					return this._$t;
				},
			},
			currentSubNetwork: {
				get: function() {
					return this._3H;
				},
				set: function(t) {
					if ((t && !t[Jd] && (t = null), this._3H != t)) {
						var i = this._3H;
						(this._3H = t), this._$t[g](new eB(this, Av, t, i));
					}
				},
			},
		}),
		(DF.GROUP_TYPE = qB.GROUP_TYPE_RECT),
		(DF[Ov] = 5),
		(DF[Iv] = !0),
		(DF[Lv] = { width: 60, height: 60 });
	var o$ = function(t, i, n) {
		HR(this, o$, arguments),
			(i !== M && n !== M) || (this[Yb][Mv] = !0),
			(this[Sv] = DF[Dv]),
			(this[nu] = DF.GROUP_PADDING),
			(this.$image = xG[Pv]),
			(this[Cv] = DF[Lv]),
			(this.expanded = DF[Iv]);
	};
	function f$(t, i, n) {
		HR(this, f$, arguments), (this.$image = null);
	}
	(o$.prototype = {
		type: Rv,
		$uiClass: U$,
		_oX4: function() {
			return !this._j1 && !this._f6;
		},
		forEachOutEdge: function(t, i, n) {
			return !1 !== VW(this, t, i) && (!n && this[Fv]() && this._8U ? this._8U[It](t, i) : void 0);
		},
		forEachInEdge: function(t, i, n) {
			return !1 !== KW(this, t, i) && (!n && this[Fv]() && this[bb] ? this[bb].forEach(t, i) : void 0);
		},
		forEachEdge: function(t, i, n) {
			return (
				!1 !== YR(this, o$, ab, arguments) &&
				(n || n || !this[Fv]() ? void 0 : (!this[bb] || !1 !== this[bb][It](t, i)) && (this._8U ? this._8U[It](t, i) : void 0))
			);
		},
		hasInEdge: function(t) {
			return t ? null != this._jV : null != this._jV || this._73();
		},
		hasOutEdge: function(t) {
			return t ? null != this._hA : null != this._hA || this._5Q();
		},
		hasEdge: function(t) {
			return t ? null != this._jV || null != this._hA : null != this._jV || null != this._hA || this[ba]();
		},
	}),
		XR(o$, QW),
		OF(o$[N], {
			expanded: {
				get: function() {
					return this._j1;
				},
				set: function(t) {
					if (this._j1 != t) {
						var i = new eB(this, Ud, t, this._j1);
						!1 !== this.beforeEvent(i) &&
							((this._j1 = t),
							this._$z(),
							this[g](i),
							this._f6 ||
								function() {
									if (!0 !== this._j1)
										zW(this)[It](function(t) {
											var i = (t = t[Zb])[Sb],
												n = t.$to,
												e = i[xb](this),
												s = n.isDescendantOf(this);
											e && !s ? (GW(this, t), BW(this, t)) : s && !e && ($W(this, t), BW(t[Ad], t, this));
										}, this);
									else {
										var t = this._8U,
											i = this[bb];
										if (t) for (t = t._l5; t[F]; ) WW(this, (n = t[0]), n[Od]);
										if (i)
											for (i = i._l5; i.length; ) {
												var n;
												XW(this, (n = i[0]), n[Ad]);
											}
										qW(this, zW(this));
									}
								}[m](this));
					}
				},
			},
		}),
		zR(o$[N], [Bv, kv, Gv, Wv]),
		(QB[$v] = o$),
		(f$.prototype.type = Xv),
		XR(f$, QW),
		(QB.Text = f$);
	var c$ = function(t) {
		(this._l7 = new JF()), (this._8X = new JF()), (this._hN = new JF()), (this.id = ++VR), t && (this.data = t);
	};
	function u$(t, n, i, e) {
		return (
			(t[n] = i),
			e
				? {
						get: function() {
							return this[n];
						},
						set: function(t) {
							if (t !== this[n]) {
								(this[n] = t), this[Le], (this._1H = !0);
								for (var i = e[F]; 0 <= --i; ) this[e[i]] = !0;
							}
						},
				  }
				: {
						get: function() {
							return this[n];
						},
						set: function(t) {
							t !== this[n] && (this[n] = t);
						},
				  }
		);
	}
	function _$(t, i) {
		var n = {},
			e = {};
		for (var s in i) {
			var h = i[s];
			h.validateFlags &&
				h[Hv].forEach(function(t, i, n) {
					(n[i] = Yv + t), (e[t] = !0);
				}),
				(n[s] = u$(t, l + s, h[Ni], h[Hv]));
		}
		for (var r in e) t[Yv + r] = !0;
		Object[ob](t, n);
	}
	function l$(t) {
		if (t[Jv] && t.$_hostRotate) {
			var i = t.$_hostRotate;
			return t.globalDirection && Ak(i) ? i + Math.PI : i;
		}
	}
	(c$[N] = {
		invalidate: function() {
			this.invalidateData();
		},
		_1H: !0,
		_l7: null,
		_8X: null,
		_hN: null,
		_oXW: !1,
		_l8: 1,
		_l9: 1,
		_k1: !0,
		_8Z: 0,
		_75: 0,
		_lB: null,
		_oXY: null,
		borderColor: Zv,
		borderLineDash: null,
		borderLineDashOffset: null,
		syncSelection: !0,
		syncSelectionStyles: !0,
		_17: function() {
			this[Uv] = tB(this.anchorPosition, this._8Z, this._75);
		},
		setMeasuredBounds: function(t, i, n, e) {
			if (
				(t instanceof Object && ((n = t.x), (e = t.y), (i = t[Xt]), (t = t[$t])),
				this._l7[$t] == t && this._l7[Xt] == i && this._l7.x == n && this._l7.y == e)
			)
				return !1;
			this._l7.set(n || 0, e || 0, t || 0, i || 0);
		},
		initialize: function() {},
		measure: function() {},
		draw: function(t, i, n, e) {},
		_91: function(t, i, n) {
			n[jv] == qB[Gr]
				? ((t[fo] = n[bf]), (t[co] = n[df] * i), (t[uo] = (n[vf] || 0) * i), (t[_o] = (n[zv] || 0) * i))
				: this._23(t, i, n);
		},
		_23: function(t, i, n) {
			var e = n[Vv] || 0;
			n.selectionBackgroundColor &&
				((t[pa] = n[Kv]), t[wa](this._8X.x - e / 2, this._8X.y - e / 2, this._8X[$t] + e, this._8X[Xt] + e)),
				(t[Oa] = n.selectionColor),
				(t[Ea] = e),
				t.strokeRect(this._8X.x - e / 2, this._8X.y - e / 2, this._8X[$t] + e, this._8X[Xt] + e);
		},
		_lD: function(t, i, n, e) {
			if (!this._k1) return !1;
			this[Qv] || (n = this[Hd]),
				((!n || this[qv]) && e) || (e = this),
				t.save(),
				1 != this[ty] && (t[Jc] = this[ty]),
				t[Ta](this.$x, this.$y);
			var s = l$(this);
			if (
				(s && t[Mt](s),
				(this.offsetX || this[iy]) && t[Ta](this.offsetX, this.offsetY),
				this.$rotate && t[Mt](this[Vc]),
				this[qc] && this._oXY && t[Ta](-this[zc].x, -this._oXY.y),
				this[fo] && ((t[fo] = this[fo]), (t[co] = this[co] * i), (t.shadowOffsetX = this[uo] * i), (t[_o] = this[_o] * i)),
				n && e[jv] == qB[ny] && (this._23(t, i, e), (n = !1)),
				this._$q() && this._o3Shape && !this._o3Shape[ey])
			) {
				this[lu][Mo]();
				var h = {
					lineWidth: this[su],
					strokeStyle: this.borderColor,
					lineDash: this.borderLineDash,
					lineDashOffset: this[sy],
					fillColor: this[hy],
					fillGradient: this[yu],
					lineCap: Lr,
					lineJoin: tr,
				};
				this[lu][Ba](t, i, h, n, e), (n = !1), (t[fo] = pf);
			}
			t[Sf](), this[Ba](t, i, n, e), t[Sa]();
		},
		invalidateData: function() {
			(this[ry] = !0), (this[tu] = !0), (this._1H = !0);
		},
		invalidateSize: function() {
			(this[tu] = !0), (this._1H = !0);
		},
		invalidateRender: function() {
			this._1H = !0;
		},
		_5V: function() {},
		_$q: function() {
			return this.$backgroundColor || this[ay] || this[su];
		},
		_4D: function() {
			return this[hy] || this[ay];
		},
		doValidate: function() {
			return (
				this[ry] && (this.$invalidateData = !1) !== this.measure() && (this[tu] = !0),
				this.$invalidateSize && this.validateSize && this[oy](),
				TG[m](this)
					? ((this[gu] = !0), this.onBoundsChanged && this[fy](), !0)
					: this.$invalidateLocation
					? ((this[gu] = !0), !(this[cy] = !1))
					: void 0
			);
		},
		validate: function() {
			var t = this._k1;
			return (
				this[uy] &&
					((this.$invalidateVisibility = !1),
					(this._k1 = this[_y]),
					!this._k1 || ((this[Ed] || this[ly]) && !1 !== this._5V()) || (this._k1 = !1)),
				this._k1 ? ((this._1H = !1), this[Le] || (this[dy](), (this[Le] = !0)), this[by]()) : t != this._k1
			);
		},
		_k2: function(t, i) {
			return (t -= this.$x), (i -= this.$y), wG[m](this, { x: t, y: i });
		},
		hitTest: function(t, i, n, e) {
			if (((t -= this.$x), (i -= this.$y), !this._hN.intersectsPoint(t, i, n))) return !1;
			var s = wG[m](this, { x: t, y: i });
			return (
				(t = s.x),
				(i = s.y),
				!(e || !this._$q() || !this[lu] || !this[lu][xo](t, i, n, !1, this.$border, this[hy] || this.$backgroundGradient)) ||
					this.doHitTest(t, i, n)
			);
		},
		doHitTest: function(t, i, n) {
			return this._l7[zt](t, i, n);
		},
		hitTestByBounds: function(t, i, n, e) {
			var s = this._k2(t, i);
			return (
				!(e || !this._$q() || !this[lu] || !this._o3Shape[xo](t, i, n, !1, this[su], this[hy] || this.$backgroundGradient)) ||
				this._l7[zt](s.x, s.y, n)
			);
		},
		onDataChanged: function(t, i) {
			(this[ry] = !0), (this._1H = !0), (this[uy] = !0);
		},
		getBounds: function() {
			var t = this._hN.clone();
			return (
				t[ca](this.x, this.y),
				this[Fi] && (this[Fi][Mt] && ek(t, this[Fi].rotate, t), t.offset(this[Fi].x || 0, this.parent.y || 0)),
				t
			);
		},
		destroy: function() {
			this[Du] = !0;
		},
		_fA: !1,
	}),
		OF(c$.prototype, {
			originalBounds: {
				get: function() {
					return this._l7;
				},
			},
			data: {
				get: function() {
					return this[Ed];
				},
				set: function(t) {
					if (this[Ed] != t) {
						var i = this[Ed];
						(this[Ed] = t), this[vy](t, i);
					}
				},
			},
			parent: {
				get: function() {
					return this._lB;
				},
			},
			showOnTop: {
				get: function() {
					return this._fA;
				},
				set: function(t) {
					t != this._fA && ((this._fA = t), (this._1H = !0), this._lB && this._lB[yy] && this._lB[yy](this));
				},
			},
		}),
		_$(c$[N], {
			globalDirection: { value: !1, validateFlags: [gy] },
			visible: { value: !0, validateFlags: [Ey, gy] },
			showEmpty: { validateFlags: [Ey] },
			anchorPosition: { value: UF[li], validateFlags: [xy, gy] },
			position: { value: UF[li], validateFlags: [gy] },
			offsetX: { value: 0, validateFlags: [gy] },
			offsetY: { value: 0, validateFlags: [gy] },
			layoutByAnchorPoint: { value: !0, validateFlags: [my, xy, gy] },
			padding: { value: 0, validateFlags: [my] },
			border: { value: 0, validateFlags: [my] },
			borderRadius: { value: DF[Hr] },
			showPointer: { value: !1, validateFlags: [my] },
			pointerX: { value: 0, validateFlags: [my] },
			pointerY: { value: 0, validateFlags: [my] },
			pointerWidth: { value: DF[Yr] },
			backgroundColor: { validateFlags: [my] },
			backgroundGradient: { validateFlags: [my, py] },
			selected: { value: !1, validateFlags: [my] },
			selectionBorder: { value: DF[wy], validateFlags: [my] },
			selectionShadowBlur: { value: DF.SELECTION_SHADOW_BLUR, validateFlags: [my] },
			selectionColor: { value: DF[$r], validateFlags: [my] },
			selectionType: { value: DF[Xr], validateFlags: [my] },
			selectionShadowOffsetX: { value: 0, validateFlags: [my] },
			selectionShadowOffsetY: { value: 0, validateFlags: [my] },
			shadowBlur: { value: 0, validateFlags: [my] },
			shadowColor: { validateFlags: [my] },
			shadowOffsetX: { value: 0, validateFlags: [my] },
			shadowOffsetY: { value: 0, validateFlags: [my] },
			renderColorBlendMode: {},
			renderColor: {},
			x: { value: 0, validateFlags: [gy] },
			y: { value: 0, validateFlags: [gy] },
			rotatable: { value: !0, validateFlags: [Ty, my] },
			rotate: { value: 0, validateFlags: [Ty, my] },
			_hostRotate: { validateFlags: [Ty] },
			lineWidth: { value: 0, validateFlags: [ph] },
			alpha: { value: 1 },
		});
	var d$ = [qB[Ny], qB.PROPERTY_TYPE_STYLE, qB[cn]];
	function b$() {
		d$.forEach(function(t) {
			this[t] = {};
		}, this);
	}
	b$[N] = {
		removeBinding: function(i) {
			for (var t = d$[F]; 0 <= --t; ) {
				var n = this[d$[t]];
				for (var e in n) {
					var s = n[e];
					Array[W](s)
						? (FR(
								s,
								function(t) {
									return t.target == i;
								},
								this
						  ),
						  s[F] || delete n[e])
						: s[J_] == i && delete n[e];
				}
			}
		},
		_21: function(t, i, n) {
			if (!n && !(n = this[i.propertyType || qB[Ny]])) return !1;
			var e = n[t];
			e ? (Array[W](e) || (n[t] = e = [e]), e[L](i)) : (n[t] = i);
		},
		_2N: function(t, i, n, e, s, h) {
			var r = this[(t = t || qB.PROPERTY_TYPE_ACCESSOR)];
			if (!r) return !1;
			var a = { property: i, propertyType: t, bindingProperty: e, target: n, callback: s, invalidateSize: h };
			this._21(i, a, r);
		},
		onBindingPropertyChange: function(t, i, n, e) {
			var s = this[n || qB[Ny]];
			if (!s) return !1;
			var h = s[i];
			return (
				!!h &&
				((t._1H = !0),
				(function t(i, n, e, s) {
					if (Array.isArray(n)) for (var h = n[F]; 0 <= --h; ) t(i, n[h], e, s);
					else {
						var r = n[J_];
						if (r) {
							if ((r instanceof c$ || (r = i[r]), !r)) return;
						} else r = i;
						if (((s = s || i[Ay](n[Oy], e)), n[Iy] && (r[n[Iy]] = s), n[Ly])) {
							var a = n.callback;
							a instanceof Function || (a = i[a]), a instanceof Function && a[m](i, s, r);
						}
					}
				})(t, h, n, e),
				!0)
			);
		},
		initBindingProperties: function(t, i) {
			for (var n = d$[F]; 0 <= --n; ) {
				var e = d$[n],
					s = this[e];
				for (var h in s) {
					var r = s[h];
					if (r[Iy]) {
						var a,
							o = r.target;
						if (o) {
							if (!(o instanceof c$ || (o = t[o]))) continue;
						} else o = t;
						(a = !1 === i ? t[Ay](r[Oy], e) : e == qB[yb] ? t[My][Sy](t[Ed], r.property) : t[Ed][r[Oy]]) !== M &&
							(o[r[Iy]] = a);
					}
				}
			}
		},
	};
	var v$ = {
		SELECTION_COLOR: Dy,
		SELECTION_BORDER: Py,
		SELECTION_SHADOW_BLUR: "selection.shadow.blur",
		SELECTION_SHADOW_OFFSET_X: "selection.shadow.offset.x",
		SELECTION_SHADOW_OFFSET_Y: "selection.shadow.offset.y",
		SELECTION_TYPE: Cy,
		RENDER_COLOR: Ry,
		RENDER_COLOR_BLEND_MODE: "render.color.blend.mode",
		ALPHA: Fy,
		SHADOW_BLUR: By,
		SHADOW_COLOR: ky,
		SHADOW_OFFSET_X: Gy,
		SHADOW_OFFSET_Y: Wy,
		SHAPE_STROKE: $y,
		SHAPE_STROKE_STYLE: Xy,
		SHAPE_LINE_FILL_COLOR: "shape.stroke.fill.color",
		SHAPE_LINE_DASH: Hy,
		SHAPE_LINE_DASH_OFFSET: "shape.line.dash.offset",
		SHAPE_FILL_COLOR: Yy,
		SHAPE_FILL_GRADIENT: Jy,
		SHAPE_OUTLINE: Zy,
		SHAPE_OUTLINE_STYLE: Uy,
		LAYOUT_BY_PATH: jy,
		BACKGROUND_COLOR: zy,
		BACKGROUND_GRADIENT: Vy,
		BORDER: Ky,
		BORDER_COLOR: Qy,
		BORDER_LINE_DASH: qy,
		BORDER_LINE_DASH_OFFSET: "border.line.dash.offset",
		BORDER_RADIUS: tg,
		PADDING: Gv,
		LINE_CAP: ig,
		LINE_JOIN: ng,
		LINE_DASH_CAP: eg,
		LINE_DASH_JOIN: sg,
		IMAGE_BACKGROUND_COLOR: "image.background.color",
		IMAGE_BACKGROUND_GRADIENT: "image.background.gradient",
		IMAGE_BORDER: hg,
	};
	(v$[rg] = v$.IMAGE_BORDER_COLOR = ag),
		(v$[og] = "image.border.line.dash"),
		(v$[fg] = "image.border.line.dash.offset"),
		(v$[cg] = v$[ug] = _g),
		(v$[lg] = dg),
		(v$.IMAGE_Z_INDEX = bg),
		(v$[vg] = yg),
		(v$[gg] = Eg),
		(v$[xg] = mg),
		(v$[pg] = wg),
		(v$[Tg] = "label.global.direction"),
		(v$[Ng] = Ag),
		(v$[Og] = "label.anchor.position"),
		(v$[Ig] = Lg),
		(v$[Mg] = Sg),
		(v$.LABEL_FONT_FAMILY = Dg),
		(v$[Pg] = Cg),
		(v$.LABEL_PADDING = Rg),
		(v$[Fg] = Bg),
		(v$.LABEL_POINTER = kg),
		(v$[Gg] = Wg),
		(v$[$g] = Xg),
		(v$.LABEL_OFFSET_Y = Hg),
		(v$[Yg] = Jg),
		(v$[Zg] = Ug),
		(v$[jg] = zg),
		(v$[Vg] = "label.border.line.dash"),
		(v$[Kg] = "label.border.line.dash.offset"),
		(v$.LABEL_BORDER_STYLE = Qg),
		(v$.LABEL_BACKGROUND_COLOR = "label.background.color"),
		(v$[qg] = "label.background.gradient"),
		(v$[tE] = iE),
		(v$.LABEL_SHADOW_BLUR = nE),
		(v$[eE] = sE),
		(v$[hE] = "label.shadow.offset.x"),
		(v$.LABEL_SHADOW_OFFSET_Y = "label.shadow.offset.y"),
		(v$[rE] = aE),
		(v$[oE] = fE),
		(v$[cE] = "group.background.color"),
		(v$.GROUP_BACKGROUND_GRADIENT = "group.background.gradient"),
		(v$[uE] = _E),
		(v$[lE] = dE),
		(v$[bE] = vE),
		(v$[yE] = "group.stroke.line.dash"),
		(v$[gE] = "group.stroke.line.dash.offset"),
		(v$[EE] = "edge.bundle.label.rotate"),
		(v$.EDGE_BUNDLE_LABEL_POSITION = "edge.bundle.label.position"),
		(v$[xE] = "edge.bundle.label.anchor.position"),
		(v$[mE] = "edge.bundle.label.color"),
		(v$[pE] = "edge.bundle.label.font.size"),
		(v$[wE] = "edge.bundle.label.font.family"),
		(v$[TE] = "edge.bundle.label.font.style"),
		(v$.EDGE_BUNDLE_LABEL_PADDING = "edge.bundle.label.padding"),
		(v$[NE] = "edge.bundle.label.pointer.width"),
		(v$[AE] = "edge.bundle.label.pointer"),
		(v$[OE] = "edge.bundle.label.radius"),
		(v$[IE] = "edge.bundle.label.offset.x"),
		(v$.EDGE_BUNDLE_LABEL_OFFSET_Y = "edge.bundle.label.offset.y"),
		(v$[LE] = "edge.bundle.label.border"),
		(v$[ME] = "edge.bundle.label.border.color"),
		(v$[SE] = "edge.bundle.label.background.color"),
		(v$.EDGE_BUNDLE_LABEL_BACKGROUND_GRADIENT = "edge.bundle.label.background.gradient"),
		(v$[DE] = "edge.bundle.label.rotatable"),
		(v$.EDGE_WIDTH = PE),
		(v$[CE] = RE),
		(v$[FE] = BE),
		(v$[kE] = GE),
		(v$.EDGE_LINE_DASH = WE),
		(v$[$E] = "edge.line.dash.offset"),
		(v$.EDGE_FROM_OFFSET = XE),
		(v$[HE] = YE),
		(v$[JE] = ZE),
		(v$[UE] = jE),
		(v$.EDGE_BUNDLE_GAP = zE),
		(v$[VE] = KE),
		(v$[QE] = qE),
		(v$.EDGE_CONTROL_POINT = tx),
		(v$.EDGE_SPLIT_BY_PERCENT = "edge.split.by.percent"),
		(v$[ix] = nx),
		(v$[ex] = sx),
		(v$[hx] = rx),
		(v$.EDGE_CORNER_RADIUS = ax),
		(v$[ox] = fx),
		(v$[cx] = ux),
		(v$[_x] = lx),
		(v$[dx] = bx),
		(v$[vx] = yx),
		(v$[gx] = Ex),
		(v$[xx] = mx),
		(v$[px] = wx),
		(v$[Tx] = "arrow.from.stroke.style"),
		(v$[Nx] = Ax),
		(v$[Ox] = "arrow.from.outline.style"),
		(v$[Ix] = Lx),
		(v$[Mx] = "arrow.from.line.dash.offset"),
		(v$.ARROW_FROM_FILL_COLOR = "arrow.from.fill.color"),
		(v$[Sx] = "arrow.from.fill.gradient"),
		(v$.ARROW_FROM_LINE_CAP = Dx),
		(v$[Px] = Cx),
		(v$[hv] = Rx),
		(v$[Fx] = Bx),
		(v$[kx] = Gx),
		(v$.ARROW_TO_STROKE = Wx),
		(v$.ARROW_TO_STROKE_STYLE = "arrow.to.stroke.style"),
		(v$[$x] = Xx),
		(v$[Hx] = "arrow.to.outline.style"),
		(v$[Yx] = Jx),
		(v$[Zx] = "arrow.to.line.dash.offset"),
		(v$[Ux] = jx),
		(v$.ARROW_TO_FILL_GRADIENT = "arrow.to.fill.gradient"),
		(v$[zx] = Vx),
		(v$[Kx] = Qx);
	var y$ = new b$(),
		g$ = qB[Ny],
		E$ = qB[yb];
	y$._2N(E$, v$[Xr], null, jv),
		y$._2N(E$, v$[wy], null, Vv),
		y$._2N(E$, v$[Wr], null, df),
		y$._2N(E$, v$[$r], null, bf),
		y$._2N(E$, v$[qx], null, "selectionShadowOffsetX"),
		y$._2N(E$, v$[tm], null, "selectionShadowOffsetY"),
		y$._2N(g$, To, im, Qi),
		y$._2N(E$, v$[Ng], im, Wl),
		y$._2N(E$, v$[pg], im, ko),
		y$._2N(E$, v$.LABEL_GLOBAL_DIRECTION, im, mu),
		y$._2N(E$, v$[Og], im, ev),
		y$._2N(E$, v$[Ig], im, nm),
		y$._2N(E$, v$[Mg], im, em),
		y$._2N(E$, v$[jg], im, kh),
		y$._2N(E$, v$.LABEL_BORDER_LINE_DASH, im, sm),
		y$._2N(E$, v$[Kg], im, sy),
		y$._2N(E$, v$[hm], im, rm),
		y$._2N(E$, v$[am], im, om),
		y$._2N(E$, v$[oE], im, fm),
		y$._2N(E$, v$[cm], null, co),
		y$._2N(E$, v$[um], null, fo),
		y$._2N(E$, v$.SHADOW_OFFSET_X, null, uo),
		y$._2N(E$, v$.SHADOW_OFFSET_Y, null, _o),
		y$._2N(E$, v$[_m], im, lm),
		y$._2N(E$, v$.LABEL_FONT_STYLE, im, dm),
		y$._2N(E$, v$.LABEL_ALIGN_POSITION, im, bm),
		y$._2N(E$, v$.LABEL_ROTATE, im, Mt),
		y$._2N(E$, v$[vm], im, Gv),
		y$._2N(E$, v$.LABEL_POINTER_WIDTH, im, ym),
		y$._2N(E$, v$.LABEL_POINTER, im, gm),
		y$._2N(E$, v$[Gg], im, Em),
		y$._2N(E$, v$[$g], im, xm),
		y$._2N(E$, v$[mm], im, iy),
		y$._2N(E$, v$[tE], im, pm),
		y$._2N(E$, v$[qg], im, vu),
		y$._2N(E$, v$[Yg], im, ml),
		y$._2N(E$, v$.LABEL_SHADOW_BLUR, im, co),
		y$._2N(E$, v$.LABEL_SHADOW_COLOR, im, fo),
		y$._2N(E$, v$[hE], im, uo),
		y$._2N(E$, v$[wm], im, _o),
		y$._2N(E$, v$[rE], im, xd),
		y$._2N(E$, v$.RENDER_COLOR, null, Fa),
		y$._2N(E$, v$[Tm], null, lo),
		y$._2N(E$, v$.ALPHA, null, Fy);
	var x$ = new b$();
	x$._2N(g$, R_),
		x$._2N(g$, ev, null, Nm),
		x$._2N(g$, Mt, null, Mt),
		x$._2N(E$, v$.BACKGROUND_COLOR, null, om),
		x$._2N(E$, v$[Am], null, vu),
		x$._2N(E$, v$[Om], null, Gv),
		x$._2N(E$, v$[Im], null, kh),
		x$._2N(E$, v$[Hr], null, Em),
		x$._2N(E$, v$[Lm], null, rm),
		x$._2N(E$, v$[Mm], null, sm),
		x$._2N(E$, v$[Sm], null, sy),
		x$._2N(g$, mo, mo, Qi, Dm),
		x$._2N(g$, ml, mo, ml),
		x$._2N(E$, v$[Pm], mo, Ea),
		x$._2N(E$, v$[Cm], mo, Oa),
		x$._2N(E$, v$[Rm], mo, wf),
		x$._2N(E$, v$[Fm], mo, Eu),
		x$._2N(E$, v$.IMAGE_ADJUST, mo, Bm),
		x$._2N(E$, v$.SHAPE_OUTLINE, mo, gf),
		x$._2N(E$, v$.SHAPE_OUTLINE_STYLE, mo, mf),
		x$._2N(E$, v$[km], mo, Nf),
		x$._2N(E$, v$[Gm], mo, Of),
		x$._2N(E$, v$[Wm], mo, Mf),
		x$._2N(E$, v$[$m], mo, Ef),
		x$._2N(E$, v$.LINE_JOIN, mo, xf),
		x$._2N(E$, v$.IMAGE_BACKGROUND_COLOR, mo, om),
		x$._2N(E$, v$[Xm], mo, vu),
		x$._2N(E$, v$[lg], mo, Gv),
		x$._2N(E$, v$.IMAGE_BORDER, mo, kh),
		x$._2N(E$, v$[ug], mo, Em),
		x$._2N(E$, v$.IMAGE_BORDER_COLOR, mo, rm),
		x$._2N(E$, v$[og], mo, sm),
		x$._2N(E$, v$.IMAGE_BORDER_LINE_DASH_OFFSET, mo, sy),
		x$._2N(E$, v$[Hm], mo, xd),
		x$._2N(E$, v$[gg], mo, Fy),
		x$._2N(g$, Ud, null, null, Ym),
		x$._2N(g$, Jd, null, null, Ym);
	var m$ = new b$();
	m$._2N(g$, kv, null, null, Jm),
		m$._2N(g$, Wv, null, null, Jm),
		m$._2N(g$, Bv, null, null, Jm),
		m$._2N(g$, Gv, null, null, Jm),
		m$._2N(E$, v$.GROUP_BACKGROUND_COLOR, Zm, wf),
		m$._2N(E$, v$[Um], Zm, Nf),
		m$._2N(E$, v$[lE], Zm, Ea),
		m$._2N(E$, v$[bE], Zm, Oa),
		m$._2N(E$, v$.GROUP_STROKE_LINE_DASH, Zm, Of),
		m$._2N(E$, v$[gE], Zm, Mf),
		m$._2N(E$, v$[uE], null, null, Jm);
	var p$ = new b$();
	p$._2N(g$, yd, Zm, null, jm),
		p$._2N(g$, Xb, Zm, null, jm),
		p$._2N(g$, Fb, Zm, null, jm),
		p$._2N(E$, v$[QE], Zm, null, jm),
		p$._2N(E$, v$[UE], Zm, null, jm),
		p$._2N(E$, v$[zm], Zm, Ea),
		p$._2N(E$, v$[CE], Zm, Oa),
		p$._2N(E$, v$[vx], Zm, Vm),
		p$._2N(E$, v$.ARROW_TO, Zm, Km),
		p$._2N(E$, v$[Qm], Zm, If),
		p$._2N(E$, v$.LINE_DASH_JOIN, Zm, Lf),
		p$._2N(E$, v$.EDGE_FILL_COLOR, Zm, qm),
		p$._2N(E$, v$[ox], null, tp, jm),
		p$._2N(E$, v$.EDGE_TO_AT_EDGE, null, ip, jm),
		p$._2N(E$, v$[FE], Zm, gf),
		p$._2N(E$, v$[kE], Zm, mf),
		p$._2N(E$, v$.EDGE_LINE_DASH, Zm, Of),
		p$._2N(E$, v$.EDGE_LINE_DASH_OFFSET, Zm, Mf),
		p$._2N(E$, v$[np], Zm, null, jm),
		p$._2N(E$, v$[ep], Zm, null, jm),
		p$._2N(E$, v$[HE], Zm, null, jm),
		p$._2N(E$, v$[_x], Zm, null, jm),
		p$._2N(E$, v$.EDGE_TO_PORT, Zm, null, jm),
		p$._2N(E$, v$.LINE_CAP, Zm, Ef),
		p$._2N(E$, v$.LINE_JOIN, Zm, xf),
		p$._2N(g$, Bb, null, null, jm, !0),
		p$._2N(g$, Fo, null, null, jm, !0),
		p$._2N(E$, v$.ARROW_FROM_SIZE, Zm, sp),
		p$._2N(E$, v$[xx], Zm, hp),
		p$._2N(E$, v$[px], Zm, rp),
		p$._2N(E$, v$[Tx], Zm, ap),
		p$._2N(E$, v$.ARROW_FROM_OUTLINE, Zm, op),
		p$._2N(E$, v$[Ox], Zm, "fromArrowOutlineStyle"),
		p$._2N(E$, v$[fp], Zm, cp),
		p$._2N(E$, v$[Sx], Zm, "fromArrowFillGradient"),
		p$._2N(E$, v$[Ix], Zm, up),
		p$._2N(E$, v$[Mx], Zm, "fromArrowLineDashOffset"),
		p$._2N(E$, v$.ARROW_FROM_LINE_JOIN, Zm, _p),
		p$._2N(E$, v$[lp], Zm, dp),
		p$._2N(E$, v$[Fx], Zm, bp),
		p$._2N(E$, v$[kx], Zm, vp),
		p$._2N(E$, v$[yp], Zm, gp),
		p$._2N(E$, v$[Ep], Zm, xp),
		p$._2N(E$, v$[$x], Zm, mp),
		p$._2N(E$, v$.ARROW_TO_OUTLINE_STYLE, Zm, pp),
		p$._2N(E$, v$.ARROW_TO_FILL_COLOR, Zm, wp),
		p$._2N(E$, v$[Tp], Zm, Np),
		p$._2N(E$, v$[Yx], Zm, Ap),
		p$._2N(E$, v$.ARROW_TO_LINE_DASH_OFFSET, Zm, "toArrowLineDashOffset"),
		p$._2N(E$, v$.ARROW_TO_LINE_JOIN, Zm, Op),
		p$._2N(E$, v$.ARROW_TO_LINE_CAP, Zm, Ip);
	var w$ = new b$();
	w$._2N(E$, v$[mE], Lp, nm),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_POSITION, Lp, ko),
		w$._2N(E$, v$[xE], Lp, ev),
		w$._2N(E$, v$[pE], Lp, em),
		w$._2N(E$, v$[DE], Lp, pm),
		w$._2N(E$, v$[EE], Lp, Mt),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_FONT_FAMILY, Lp, lm),
		w$._2N(E$, v$[TE], Lp, dm),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_PADDING, Lp, Gv),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_POINTER_WIDTH, Lp, ym),
		w$._2N(E$, v$[AE], Lp, gm),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_RADIUS, Lp, Em),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_OFFSET_X, Lp, xm),
		w$._2N(E$, v$[Mp], Lp, iy),
		w$._2N(E$, v$[LE], Lp, kh),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_BORDER_STYLE, Lp, rm),
		w$._2N(E$, v$.EDGE_BUNDLE_LABEL_BACKGROUND_COLOR, Lp, om),
		w$._2N(E$, v$[Sp], Lp, vu);
	var T$ = new b$();
	function N$(t, i) {
		return (t = t.zIndex) == (i = i[xd]) ? 0 : (i = i || 0) < (t = t || 0) ? 1 : t < i ? -1 : void 0;
	}
	T$._2N(g$, R_),
		T$._2N(E$, v$[Dp], null, om),
		T$._2N(E$, v$[Am], null, vu),
		T$._2N(E$, v$[Om], null, Gv),
		T$._2N(E$, v$[Im], null, kh),
		T$._2N(E$, v$.BORDER_RADIUS, null, Em),
		T$._2N(E$, v$.BORDER_COLOR, null, rm),
		T$._2N(E$, v$[Mm], null, sm),
		T$._2N(E$, v$[Sm], null, sy),
		T$._2N(g$, Mt, null, Mt),
		T$._2N(g$, Bb, null, null, Pp),
		T$._2N(g$, gd, mo, Qi),
		T$._2N(g$, ml, mo, ml),
		T$._2N(E$, v$[Pm], mo, Ea),
		T$._2N(E$, v$[Cm], mo, Oa),
		T$._2N(E$, v$[Rm], mo, wf),
		T$._2N(E$, v$[km], mo, Nf),
		T$._2N(E$, v$[Qm], mo, If),
		T$._2N(E$, v$[Cp], mo, Lf),
		T$._2N(E$, v$[Rp], mo, qm),
		T$._2N(E$, v$[Fp], mo, gf),
		T$._2N(E$, v$[Bp], mo, mf),
		T$._2N(E$, v$[Gm], mo, Of),
		T$._2N(E$, v$[Wm], mo, Mf),
		T$._2N(E$, v$[$m], mo, Ef),
		T$._2N(E$, v$.LINE_JOIN, mo, xf),
		T$._2N(E$, v$.LAYOUT_BY_PATH, mo, Eu),
		T$._2N(E$, v$[kp], mo, om),
		T$._2N(E$, v$.IMAGE_BACKGROUND_GRADIENT, mo, vu),
		T$._2N(E$, v$.IMAGE_PADDING, mo, Gv),
		T$._2N(E$, v$.IMAGE_BORDER, mo, kh),
		T$._2N(E$, v$.IMAGE_BORDER_RADIUS, mo, Em),
		T$._2N(E$, v$[Gp], mo, rm),
		T$._2N(E$, v$[og], mo, sm),
		T$._2N(E$, v$.IMAGE_BORDER_LINE_DASH_OFFSET, mo, sy),
		T$._2N(E$, v$[vx], mo, Vm),
		T$._2N(E$, v$[gx], mo, sp),
		T$._2N(E$, v$[xx], mo, hp),
		T$._2N(E$, v$[px], mo, rp),
		T$._2N(E$, v$.ARROW_FROM_STROKE_STYLE, mo, ap),
		T$._2N(E$, v$[fp], mo, cp),
		T$._2N(E$, v$[Sx], mo, "fromArrowFillGradient"),
		T$._2N(E$, v$[Ix], mo, up),
		T$._2N(E$, v$.ARROW_FROM_LINE_DASH_OFFSET, mo, "fromArrowLineDashOffset"),
		T$._2N(E$, v$[Px], mo, _p),
		T$._2N(E$, v$[lp], mo, dp),
		T$._2N(E$, v$.ARROW_TO_SIZE, mo, bp),
		T$._2N(E$, v$.ARROW_TO_OFFSET, mo, vp),
		T$._2N(E$, v$[hv], mo, Km),
		T$._2N(E$, v$[yp], mo, gp),
		T$._2N(E$, v$.ARROW_TO_STROKE_STYLE, mo, xp),
		T$._2N(E$, v$[Ux], mo, wp),
		T$._2N(E$, v$[Tp], mo, Np),
		T$._2N(E$, v$.ARROW_TO_LINE_DASH, mo, Ap),
		T$._2N(E$, v$[Zx], mo, "toArrowLineDashOffset"),
		T$._2N(E$, v$.ARROW_TO_LINE_JOIN, mo, Op),
		T$._2N(E$, v$.ARROW_TO_LINE_CAP, mo, Ip);
	var A$ = function(t, i) {
		(this.uiBounds = new JF()),
			HR(this, A$, arguments),
			(this.id = this.$data.id),
			(this[My] = i),
			(this._hJ = []),
			(this._dD = new b$());
	};
	function O$(t, i, n, e) {
		if (e != qB.PROPERTY_TYPE_ACCESSOR)
			if (e != qB[cn]) {
				if (e != qB[yb]) return !1;
				t[pb](n, i);
			} else t.set(n, i);
		else t[n] = i;
	}
	(A$[N] = {
		syncSelection: !1,
		graph: null,
		layoutByAnchorPoint: !1,
		_dD: null,
		_hJ: null,
		addChild: function(t, i) {
			(t._lB = this), i !== M ? GR(this._hJ, t, i) : this._hJ[L](t), t._fA && this[yy](t), this[Wp](), this[$p](), (this[Xp] = !0);
		},
		removeChild: function(t) {
			this._dD[Hp](t), (t._lB = null), WR(this._hJ, t), this._l6 && this._l6[k](t), this[$p](), (this[Xp] = !0);
		},
		getProperty: function(t, i) {
			return i == qB[yb] ? this.graph[Sy](this[Ed], t) : i == qB.PROPERTY_TYPE_CLIENT ? this[Ed].get(t) : this.$data[t];
		},
		getStyle: function(t) {
			return this.graph.getStyle(this[Ed], t);
		},
		_$v: function(t, i, n) {
			var e = this._dD[Yp](this, t, i, n);
			return y$[Yp](this, t, i, n) || e;
		},
		onPropertyChange: function(t) {
			if (xd == t.kind) return this[Yd](), !0;
			if (Nb != t[wi]) return this._$v(t[Ti], t[Li] || g$, t[Ni]);
			if (xl == t.kind) return this.invalidate(), !0;
			var i = t.value;
			return !(!i || !i.ui || (hn == t[Ti] ? this._oW9(i) : k == t[Ti] && this.removeChild(i.ui), 0));
		},
		label: null,
		initLabel: function() {
			var t = new L$();
			(t.name = im), this.addChild(t), (this[im] = t);
		},
		initialize: function() {
			this.initLabel(),
				this[Ed]._dA && this[Ed]._dA[It](this[Jp], this),
				y$.initBindingProperties(this),
				this._dD.initBindingProperties(this, !1);
		},
		addBinding: function(t, i) {
			if (!i[Oy]) return !1;
			(i.target = t), this._dD._21(i[Oy], i);
		},
		_hL: function(t, i) {
			var n = this[Ed];
			if (!n._dA) return !1;
			var e = n._dA[Tt](t.id);
			if (!e || !e.bindingProperties) return !1;
			var s = e[Zp];
			if (gF(s)) {
				var h = !1;
				return (
					RR(
						s,
						function(t) {
							if (Qi == t[Iy]) return (h = O$(n, i, t[Oy], t.propertyType)), !1;
						},
						this
					),
					h
				);
			}
			return Qi == s[Iy] && O$(n, i, s[Oy], s[Li]);
		},
		_oW9: function(t) {
			var i = t.ui;
			if (i) {
				var n = t[Zp];
				n &&
					(Array[W](n)
						? n[It](function(t) {
								this[Up](i, t);
						  }, this)
						: this[Up](i, n)),
					this[jp](i);
			}
		},
		validate: function() {
			return this[Le] || (this[dy](), (this._oXW = !0)), this[by]();
		},
		_$b: !0,
		invalidateChildrenIndex: function() {
			this._$b = !0;
		},
		doValidate: function() {
			if (
				(this._1H &&
					((this._1H = !1),
					this.validateChildren() && (this[zp](), (this[tu] = !0)),
					this._$b && ((this._$b = !1), hF ? (this._hJ = CR(this._hJ, N$)) : this._hJ[rl](N$))),
				TG[m](this) && (this[gu] = !0),
				this[gu])
			) {
				AG[m](this), this[Md].setByRect(this._hN);
				var t = this[Vp] || 0,
					i = Math.max(this.$selectionBorder || 0, this[Kp] || 0, this[Qp] || 0),
					n = Math.max(this.$shadowOffsetY || 0, this[qp] || 0),
					e = Math.max(t, this[tw], this.$selectionShadowBlur),
					s = (e += DF[iw] || 0) - i,
					h = e + i,
					r = e - n,
					a = e + n;
				return (
					s < 0 && (s = 0),
					h < 0 && (h = 0),
					r < 0 && (r = 0),
					a < 0 && (a = 0),
					this[Md].grow(r, s, a, h),
					this.onBoundsChanged && this.onBoundsChanged(),
					(this[nw] = !0)
				);
			}
		},
		validateChildren: function() {
			var t = this[Xp];
			this.$invalidateChild = !1;
			var i = this[ew],
				n = this[sw];
			i &&
				((i[hw] = this[hw]),
				(i[rw] = this[rw]),
				(i.$shadowColor = this.$shadowColor),
				(i[tw] = this[tw]),
				(i.$shadowOffsetX = this[Kp]),
				(i.$shadowOffsetY = this.$shadowOffsetY)),
				(this.bodyChanged = !1),
				i && i._1H && ((n = i[Mo]() || n), (i.$x = 0), (i.$y = 0), i[gu] && AG.call(i), (t = !0));
			for (var e = 0, s = this._hJ[F]; e < s; e++) {
				var h = this._hJ[e];
				if (h != i) {
					var r = h._1H && h[Mo]();
					(r || n) && h._k1 && OG(h, i), !t && r && (t = !0);
				}
			}
			return t;
		},
		measure: function() {
			var t, i;
			this._l7[Ot]();
			for (var n = 0, e = this._hJ.length; n < e; n++)
				(t = this._hJ[n])._k1 && ((i = t._hN)[$t] <= 0 || i.height <= 0 || this._l7[aw](t.$x + i.x, t.$y + i.y, i[$t], i[Xt]));
		},
		_l6: null,
		_oXV: function(t) {
			return this._l6 ? (t[fm] ? this._l6.add(t) : this._l6.remove(t)) : t[fm] ? ((this._l6 = new PF()), this._l6.add(t)) : void 0;
		},
		draw: function(t, i, n, e) {
			for (var s, h = 0, r = this._hJ[F]; h < r; h++) (s = this._hJ[h])._k1 && !s.showOnTop && s._lD(t, i, n, this);
		},
		_oWA: function(t, i) {
			if (!this._k1 || !this._l6 || !this._l6.length) return !1;
			var n;
			t[Vf](),
				t.translate(this.$x, this.$y),
				this[Vc] && t.rotate(this.$rotate),
				this.$layoutByAnchorPoint && this._oXY && t.translate(-this[zc].x, -this._oXY.y),
				this[fo] && ((t[fo] = this[fo]), (t[co] = this[co] * i), (t[uo] = this[uo] * i), (t[_o] = this.shadowOffsetY * i)),
				t.beginPath();
			for (var e = 0, s = this._hJ[F]; e < s; e++) (n = this._hJ[e])._k1 && n[fm] && n._lD(t, i, this[Hd], this);
			t[Sa]();
		},
		doHitTest: function(t, i, n) {
			if (n) {
				if (!this._l7.intersectsRect(t - n, i - n, 2 * n, 2 * n)) return !1;
			} else if (!this._l7[zt](t, i)) return !1;
			return this[ow](t, i, n);
		},
		hitTestChildren: function(t, i, n) {
			for (var e, s = this._hJ.length - 1; 0 <= s; s--) if ((e = this._hJ[s])._k1 && e.hitTest(t, i, n)) return e;
			return !1;
		},
		destroy: function() {
			this[Du] = !0;
			for (var t = this._hJ[F] - 1; 0 <= t; t--) this._hJ[t][Ps]();
		},
	}),
		XR(A$, c$),
		OF(A$.prototype, {
			renderColorBlendMode: {
				get: function() {
					return this[rw];
				},
				set: function(t) {
					(this[rw] = t), (this._1H = !0), this[Za] && (this[Za].renderColorBlendMode = this.$renderColorBlendMode);
				},
			},
			renderColor: {
				get: function() {
					return this[hw];
				},
				set: function(t) {
					(this.$renderColor = t), (this._1H = !0), this[Za] && (this[Za].renderColor = this[hw]);
				},
			},
			bodyBounds: {
				get: function() {
					if (this[nw]) {
						this[nw] = !1;
						var t,
							i = this[Za];
						(t = i && i._k1 && !this._$q() ? i._hN.clone() : this._8X[e]()),
							this.rotate && ((t[fw] = t[e]()), (t[Mt] = this.rotate), (t.tx = this.x), (t.ty = this.y), ek(t, this[Mt], t)),
							(t.x += this.$x),
							(t.y += this.$y),
							(this._dN = t);
					}
					return this._dN;
				},
			},
			bounds: {
				get: function() {
					return new JF((this.$x || 0) + this[Md].x, (this.$y || 0) + this[Md].y, this.uiBounds[$t], this[Md][Xt]);
				},
			},
			body: {
				get: function() {
					return this._oXody;
				},
				set: function(t) {
					t && this[ew] != t && ((this._oXody = t), (this[sw] = !0), this[$p]());
				},
			},
		}),
		(DF.UI_BOUNDS_GROW = 1);
	var I$ = function(t) {
		HR(this, I$, arguments);
	};
	(I$[N] = {
		strokeStyle: cw,
		lineWidth: 0,
		fillColor: null,
		fillGradient: null,
		_l8: 1,
		_l9: 1,
		outline: 0,
		onDataChanged: function(t, i) {
			YR(this, I$, vy, arguments), this._mA && this._8O && this._mA._6Z(this._8O, this), t && this._dE(t);
		},
		_dE: function(t) {
			(this._mA = Jk(t)),
				this._mA[Mo](),
				(this._mA._nA != Bk && !this._mA._6Y()) ||
					(this._8O ||
						(this._8O = function(t) {
							this.invalidateData(), this._lB && this._lB[My] && (this._lB.invalidateSize(), this._lB.graph[xl]());
						}),
					this._mA[So](this._8O, this));
		},
		_mA: null,
		initialize: function() {
			this._dE(this.$data);
		},
		_5V: function() {
			return this._mA && this._mA[Ba];
		},
		_oWV: function(t) {
			if (!t || t[$t] <= 0 || t[Xt] <= 0 || !this[uw] || !(this.size instanceof Object)) return (this._l8 = 1), void (this._l9 = 1);
			var i = this[ml].width,
				n = this[ml][Xt];
			if (((i !== M && null !== i) || (i = -1), (n !== M && null !== n) || (n = -1), i < 0 && n < 0))
				return (this._l8 = 1), void (this._l9 = 1);
			var e,
				s,
				h = t[$t],
				r = t[Xt];
			0 <= i && (e = i / h), 0 <= n && (s = n / r), i < 0 ? (e = s) : n < 0 && (s = e), (this._l8 = e), (this._l9 = s);
		},
		validateSize: function() {
			if (this.$invalidateScale) {
				this.$invalidateScale = !1;
				var t = this[_w];
				this._l8,
					this._l9,
					this[lw](t),
					this.setMeasuredBounds(t.width * this._l8, t[Xt] * this._l9, t.x * this._l8, t.y * this._l9);
			}
		},
		measure: function() {
			var t = this._mA[No](this[Ea] + this[gf]);
			if (t) return (this[dw] = !0), void (this[_w] = t.clone());
			this._l7.set(0, 0, 0, 0);
		},
		onBoundsChanged: function() {
			this[bw] = !0;
		},
		_1Q: function() {
			(this.$invalidateFillGradient = !1), this[Nf] ? (this[Af] = jk[N][vw][m](this[yw], this._8X)) : (this._fillGradient = null);
		},
		_m1: function(t) {
			var i, n;
			if (Rh == this.$adjustType) n = -(i = 1);
			else {
				if (Fh != this[gw]) return;
				(i = -1), (n = 1);
			}
			var e = this._l7.cx,
				s = this._l7.cy;
			t[Ta](e, s), t[Na](i, n), t.translate(-e, -s);
		},
		draw: function(t, i, n, e) {
			if (this._l8 && this._l9) {
				if ((this.$invalidateFillGradient && this._1Q(), t[Vf](), this.$adjustType && this._m1(t), this._mA._nA == Gk))
					return t[Na](this._l8, this._l9), this._mA._n8.draw(t, i, this, n, e || this), void t[Sa]();
				n && this._91(t, i, e), this._mA[Ba](t, i, this, this._l8, this._l9), t[Sa]();
			}
		},
		doHitTest: function(t, i, n) {
			if (this._mA[xo]) {
				Rh == this[gw] ? (i = 2 * this._l7.cy - i) : Fh == this[gw] && (t = 2 * this._l7.cx - t), (t /= this._l8), (i /= this._l9);
				var e = (this._l8 + this._l9) / 2;
				return (
					1 < e && ((n /= e), (n |= 0)),
					this._mA._n8 instanceof cG
						? this._mA._n8[xo](t, i, n, !0, this.$lineWidth, this[Ew] || this[yw])
						: this._mA[xo](t, i, n)
				);
			}
			return !0;
		},
		$invalidateScale: !0,
		$invalidateFillGradient: !0,
	}),
		XR(I$, c$),
		_$(I$[N], { adjustType: {}, fillColor: {}, size: { validateFlags: [my, xw] }, fillGradient: { validateFlags: [mw] } }),
		OF(I$.prototype, {
			originalBounds: {
				get: function() {
					return this._originalBounds;
				},
			},
		}),
		(DF[pw] = UF[li]);
	var L$ = function(t) {
		HR(this, L$, arguments), (this[nm] = DF.LABEL_COLOR);
	};
	(L$[N] = {
		color: DF[Ig],
		showPointer: !0,
		fontSize: null,
		fontFamily: null,
		fontStyle: null,
		_iS: null,
		alignPosition: null,
		measure: function() {
			(this.$data = "" + this[Ed]), this[ww];
			var t = (function t(i, n, e, s, h, r) {
				if (!i) return { width: 0, height: 0 };
				if (((n = n || DF[gt]), ck && n < 9)) {
					var a = n / 9,
						o = t(i, 9, e, s, h);
					return (o[$t] *= a), (o[Xt] *= a), o;
				}
				var f = fk();
				f[ww] = r || uk(e, n, s);
				for (var c = n * (h = h || DF.LINE_HEIGHT), u = 0, _ = 0, l = i.split(p_), d = 0, b = l[F]; d < b; d++) {
					var v = l[d];
					(u = Math.max(f[Tw](v).width, u)), (_ += c);
				}
				return { width: u, height: _ };
			})(this.$data, this[Nw], this[Aw], this[Ow], DF[Iw], this[Lw]);
			if (((this._iS = t), this[uw])) {
				var i = this[uw].width || 0,
					n = this[uw][Xt] || 0;
				return this.setMeasuredBounds(i > t[$t] ? i : t[$t], n > t.height ? n : t[Xt]);
			}
			return this[Mw](t[$t], t[Xt]);
		},
		doHitTest: function(t, i, n) {
			return (
				!!this[Ed] &&
				((e = n) < 1 && (e = 1),
				(function(t, i, n, e, s) {
					var h = fk((n = Math[tr](n) || 1), (e = Math[tr](e) || 1));
					h[Jf](1, 0, 0, 1, -t, -i), s[Ba](h);
					var r = _k(h, 0, 0, n, e);
					if (!r) return !1;
					for (var a = (r = r[Qi]).length / 4; 0 < a--; ) if (0 < r[4 * a - 1]) return !0;
					return !1;
				})(t - e, i - e, 2 * e, 2 * e, this))
			);
			var e;
		},
		draw: function(t, i, n, e) {
			n && this._91(t, i, e);
			var s = l$(this);
			if (s) {
				var h = Lk(s);
				FF < h &&
					h < 3 * FF &&
					(t[Ta](this._l7.width / 2, this._l7.height / 2), t[Mt](Math.PI), t.translate(-this._l7[$t] / 2, -this._l7.height / 2));
			}
			var r = this[bm] || DF[pw],
				a = r[ti],
				o = r[ii],
				f = 0;
			_i == a ? ((a = $e), (f += this._l7.width / 2)) : a == zF ? ((a = kt), (f += this._l7[$t])) : (a = Kt);
			var c = 0;
			fi == o ? (c = (this._l7.height - this._iS[Xt]) / 2) : o == KF && (c = this._l7.height - this._iS.height),
				(t[pa] = this.color),
				(function(t, i, n, e, s, h, r, a, o, f) {
					if ((t[Vf](), t.translate(n, e), ck && r < 9)) {
						var c = r / 9;
						t[Na](c, c), (r = 9), (f = null);
					}
					(o = o || DF[Iw]), (o *= r = r || DF[gt]), (t[ww] = f || uk(h, r, a)), (t[Sw] = s), (t[Dw] = Pw);
					for (var u = o / 2, _ = i[C](p_), l = 0, d = _.length; l < d; l++) {
						var b = _[l];
						t[Cw](b, 0, u), (u += o);
					}
					t[Sa]();
				})(t, this.$data, f, c, a, this.$fontFamily, this.$fontSize, this[Ow], DF[Iw], this[Lw]);
		},
		_5V: function() {
			return null != this.$data || this[uw];
		},
		$invalidateFont: !0,
	}),
		XR(L$, c$),
		_$(L$.prototype, {
			size: { validateFlags: [ph] },
			fontStyle: { validateFlags: [ph, Rw] },
			fontSize: { validateFlags: [ph, Rw] },
			fontFamily: { validateFlags: [ph, Rw] },
		}),
		OF(L$[N], {
			font: {
				get: function() {
					return (
						this.$invalidateFont &&
							((this.$invalidateFont = !1),
							(this[Lw] = (this.$fontStyle || DF[yt]) + R + (this[Nw] || DF[gt]) + Et + (this[Aw] || DF.FONT_FAMILY))),
						this[Lw]
					);
				},
			},
		});
	var M$ = function(t) {
		(t = t || new cG()), (this[Fw] = new JF()), HR(this, M$, [t]);
	};
	function S$(t, i) {
		HR(this, S$, arguments);
	}
	function D$(t, i) {
		HR(this, D$, arguments);
	}
	(M$[N] = {
		layoutByPath: !0,
		layoutByAnchorPoint: !1,
		measure: function() {
			(this.$invalidateFromArrow = !0), (this[Bw] = !0), this[Ed][No](this[kw] + this.$outline, this[Fw]), this[Mw](this.pathBounds);
		},
		validateSize: function() {
			if (this[Gw] || this[Bw]) {
				var t,
					i = this[Fw][e]();
				this[Gw] && ((this[Gw] = !1), (t = this.validateFromArrow()) && i.add(t)),
					this.$invalidateToArrow && ((this[Bw] = !1), (t = this.validateToArrow()) && i.add(t)),
					this[Mw](i);
			}
		},
		validateFromArrow: function() {
			if (this.$data._lL && this.$fromArrow) {
				var t = this.$data,
					i = 0,
					n = 0,
					e = this[Ww];
				e && (isNaN(e) && (e.x || e.y) ? ((i += e.x || 0), (n += e.y || 0)) : (i += e || 0), 0 < i && i < 1 && (i *= t._lL)),
					(this[$w] = t.getLocation(i, n)),
					(this.fromArrowLocation.rotate = Math.PI + this[$w].rotate || 0),
					(this.$fromArrowShape = B$(this[Xw], this[Hw]));
				var s = this[Yw][No](this[Jw][Ea] + this[Jw][gf]);
				return (
					this.fromArrowFillGradient instanceof QB[Zw]
						? (this.fromArrowStyles[Af] = jk[N][vw][m](this[Uw], s))
						: this.fromArrowStyles && (this[Jw][Af] = null),
					s[ca](this[$w].x, this[$w].y),
					sk(s, this[$w][Mt], s, this[$w].x, this.fromArrowLocation.y),
					s
				);
			}
			this[Yw] = null;
		},
		validateToArrow: function() {
			if (this[Ed]._lL && this[jw]) {
				var t = this[Ed],
					i = 0,
					n = 0,
					e = this[zw];
				e && (isNaN(e) && (e.x || e.y) ? ((i += e.x || 0), (n += e.y || 0)) : (i += e || 0)),
					i < 0 && -1 < i && (i *= t._lL),
					(i += t._lL),
					(this[Vw] = t[rf](i, n)),
					(this[Kw] = B$(this.$toArrow, this.$toArrowSize));
				var s = this[Kw][No](this.toArrowStyles[Ea] + this.toArrowStyles[gf]);
				return (
					this[Np] instanceof QB[Zw]
						? (this[Qw][Af] = jk.prototype.generatorGradient.call(this[Np], s))
						: this[Qw] && (this[Qw][Af] = null),
					s[ca](this[Vw].x, this.toArrowLocation.y),
					sk(s, this[Vw].rotate, s, this[Vw].x, this[Vw].y),
					s
				);
			}
			this.$toArrowShape = null;
		},
		_2D: function(t) {
			var i = t ? "from" : Xb,
				n = this[i + qw];
			n === M && (n = this[kw]);
			var e = this[i + tT];
			e === M && (e = this[Oa]);
			var s = this[i + iT];
			s || (this[i + iT] = s = {}),
				(s[Ea] = n),
				(s[Oa] = e),
				(s[Of] = this[i + nT]),
				(s[Mf] = this[i + eT]),
				(s[wf] = this[i + sT]),
				(s.fillGradient = this[i + hT]),
				(s.lineCap = this[i + rT]),
				(s[xf] = this[i + aT]),
				(s[gf] = this[i + oT] || 0),
				(s[mf] = this[i + fT]);
		},
		doValidate: function() {
			return this.$fromArrow && this._2D(!0), this.$toArrow && this._2D(!1), YR(this, M$, by);
		},
		drawArrow: function(t, i, n, e) {
			if (this.$fromArrow && this.$fromArrowShape) {
				t[Vf]();
				var s = (a = this[$w]).x,
					h = a.y,
					r = a[Mt];
				t[Ta](s, h), r && t[Mt](r), this.$fromArrowShape[Ba](t, i, this[Jw], n, e), t[Sa]();
			}
			var a;
			this[jw] &&
				this[Kw] &&
				(t.save(),
				(s = (a = this.toArrowLocation).x),
				(h = a.y),
				(r = a.rotate),
				t[Ta](s, h),
				r && t.rotate(r),
				this.$toArrowShape[Ba](t, i, this[Qw], n, e),
				t.restore());
		},
		outlineStyle: null,
		outline: 0,
		onBoundsChanged: function() {
			this[bw] = !0;
		},
		_1Q: function() {
			(this[bw] = !1), this[yw] ? (this[Af] = jk.prototype[vw][m](this[yw], this._8X)) : (this[Af] = null);
		},
		draw: function(t, i, n, e) {
			this[bw] && this._1Q(), this.$data[Ba](t, i, this, n, e), this.drawArrow(t, i, n, e);
		},
		doHitTest: function(t, i, n) {
			if (this[Ed][xo](t, i, n, !0, this[kw] + this[cT], this[Ew] || this[yw])) return !0;
			if (this[jw] && this[Kw]) {
				var e = t - this[Vw].x,
					s = i - this.toArrowLocation.y;
				this[Vw].rotate && ((e = (r = tk(e, s, -this.toArrowLocation.rotate)).x), (s = r.y));
				var h = this[Qw][wf] || this.toArrowStyles[Nf];
				if (this[Kw][xo](e, s, n, !0, this[Qw][Ea], h)) return !0;
			}
			var r;
			if (
				this[Xw] &&
				this[Yw] &&
				((e = t - this.fromArrowLocation.x),
				(s = i - this.fromArrowLocation.y),
				this[$w][Mt] && ((e = (r = tk(e, s, -this.fromArrowLocation[Mt])).x), (s = r.y)),
				(h = this[Jw].fillColor || this.fromArrowStyles.fillGradient),
				this[Yw][xo](e, s, n, !0, this[Jw][Ea], h))
			)
				return !0;
			return !1;
		},
		$fromArrowOutline: 0,
		$toArrowOutline: 0,
		$invalidateFillGradient: !0,
		$invalidateFromArrow: !0,
		$invalidateToArrow: !0,
	}),
		XR(M$, c$),
		_$(M$[N], {
			strokeStyle: { validateFlags: [uT, _T] },
			fillColor: {},
			fillGradient: { validateFlags: [mw] },
			fromArrowOffset: { validateFlags: [uT, my] },
			fromArrowSize: { validateFlags: [uT, my] },
			fromArrow: { validateFlags: [uT, my] },
			fromArrowOutline: { validateFlags: [uT, my] },
			fromArrowStroke: { validateFlags: [uT, my] },
			fromArrowStrokeStyle: { validateFlags: [uT] },
			toArrowOffset: { validateFlags: [_T, my] },
			toArrowSize: { validateFlags: [_T, my] },
			toArrow: { validateFlags: [_T, my] },
			toArrowOutline: { validateFlags: [_T, my] },
			toArrowStroke: { validateFlags: [_T, my] },
			toArrowStrokeStyle: { validateFlags: [_T] },
			outline: { value: 0, validateFlags: [ph] },
		}),
		OF(M$[N], {
			length: {
				get: function() {
					return this.data.length;
				},
			},
		}),
		(S$[N] = {
			shape: null,
			path: null,
			initialize: function() {
				YR(this, S$, dy),
					(this[gd] = new cG()),
					(this[gd]._fO = !1),
					(this.shape = new M$(this[gd])),
					this[jp](this.shape, 0),
					(this[ew] = this[Zm]),
					p$[lT](this);
			},
			_1G: !0,
			_5U: null,
			_$q: function() {
				return !1;
			},
			_4D: function() {
				return !1;
			},
			validatePoints: function() {
				this[Zm][zd]();
				var t = this.$data,
					i = this[gd];
				i[Ot]();
				var n = t[Ad],
					e = t[Od];
				n &&
					e &&
					(function(g, t, i, n, e) {
						var s = n == e,
							h = g.graph.getUI(n),
							r = s ? h : g[My][Is](e);
						if (h && r) {
							var a = t.edgeType,
								o = g[dT](h),
								f = s ? o : g[dT](r),
								c = t[Rb]();
							if (s && !c) return g[bT](g[gd], h, a, o);
							var u,
								_,
								l,
								d,
								b,
								v,
								y,
								E,
								x =
									((b = g),
									(v = o),
									(y = h[vT](b[Sy](v$.EDGE_FROM_PORT), v)),
									(E = b.getStyle(v$.EDGE_FROM_OFFSET)) && ((y.x += E.x || 0), (y.y += E.y || 0)),
									y),
								m =
									((u = g),
									(_ = f),
									(l = r[vT](u[Sy](v$[dx]), _)),
									(d = u[Sy](v$.EDGE_TO_OFFSET)) && ((l.x += d.x || 0), (l.y += d.y || 0)),
									l);
							if (!s && !a && !c) {
								var p = n[_v];
								if (p != e[_v]) {
									var w, T, N, A;
									A = p ? ((w = h), (T = o), (N = r), f) : ((w = r), (T = f), (N = h), o);
									var O = (function(t, i, n, e, s, h) {
										var r = s.cx,
											a = s.cy,
											o = Math.cos(h),
											f = Math.sin(h),
											c = X$(i, t, { x: r, y: a }, -o, -f);
										if (!c) {
											var u = r < t.x,
												_ = r > t[kt],
												l = a < t.y,
												d = a > t[Bt],
												b = t.cx,
												v = t.cy,
												y = u || _,
												g = l || d;
											(h = Math[Rt](a - v, r - b)),
												y || g || (h += Math.PI),
												(c = X$(i, t, { x: r, y: a }, -(o = Math.cos(h)), -(f = Math.sin(h))) || { x: b, y: v });
										}
										var E = X$(e, s, { x: c.x, y: c.y }, -c.perX || o, -c.perY || f, !1) || { x: r, y: a };
										return n ? [c, E] : [E, c];
									})(T, w, p, N, A, t.angle);
									if (O && 2 == O[F]) {
										var I = O[0],
											L = O[1];
										return i[_a](I.x, I.y), L.x == I.x && L.y == I.y && (L.y += 0.01), i[la](L.x, L.y), (i._6W = !0);
									}
								}
							}
							g._3I(t, i, h, r, a, o, f, x, m),
								((!s && !1 !== i._hY[yT]) || c) &&
									(function(t, i, n, e, s, h, r) {
										var a = g[tp],
											o = g.toAtEdge;
										if (!a && !o) return W$(t._hY, h, r);
										var f = t._hY;
										if (f[F]) {
											if (a) $$(i, e, f[0][na], h, M, M);
											if (o) {
												var c,
													u = f[f.length - 1],
													_ = u[ea],
													l = u.points[F],
													d = u[nf] || _.x === M || _.y === M;
												4 <= l &&
													(d || s.contains(_.x, _.y)) &&
													(d || (r = _),
													(c = !0),
													(_ = { x: u[Fs][l - 4], y: u[Fs][l - 3] }),
													s.contains(_.x, _.y) &&
														((r = _),
														6 <= l
															? ((_ = { x: u[Fs][l - 6], y: u[Fs][l - 5] }),
															  (u.points = u[Fs][S](0, 4)),
															  (u[wi] = hG))
															: 1 == f.length
															? ((_ = { x: h.x, y: h.y }), (u.points = u[Fs].slice(0, 2)), (u.type = sG))
															: (_ = (u = f[f[F] - 2])[ea]))),
													$$(n, s, _, r, M, M),
													c && ((l = u[Fs][F]), (u.points[l - 2] = r.x), (u[Fs][l - 1] = r.y), (r = null));
											}
										} else {
											var b = Math[Rt](r.y - h.y, r.x - h.x),
												v = Math.cos(b),
												y = Math.sin(b);
											a && $$(i, e, r, h, v, y), o && $$(n, s, h, r, -v, -y);
										}
										W$(t._hY, h, r);
									})(i, h, r, o, f, x, m),
								delete i._hY._linkTerminalPoint,
								(i._6W = !0);
						}
					})(this, t, i, n, e);
			},
			getEndPointBounds: function(t) {
				return t[gT]();
			},
			_3I: function(t, i, n, e, s, h, r, a, o) {
				t.hasPathSegments() ? (i[ET] = t[xT].toDatas()) : n != e ? this[mT](i, n, e, s, h, r, a, o) : this[bT](i, n, s, h, a, o);
			},
			drawLoopedEdge: function(t, i, n, e, s, h) {
				!(function(t, i, n) {
					var e = t[Sy](v$.EDGE_LOOPED_EXTAND),
						s = t._22(),
						h = e + 0.2 * s,
						r = i.x + i.width - h,
						a = i.y,
						o = i.x + i[$t],
						f = i.y + h;
					e += s;
					var c = { x: r, y: a },
						u = { x: i.x + i.width + 0.707 * e, y: i.y + -0.707 * e },
						_ = { x: o, y: f },
						l = c.x,
						d = u.x,
						b = _.x,
						v = c.y,
						y = u.y,
						g = _.y,
						E =
							((g - v) * (y * y - v * v + d * d - l * l) + (y - v) * (v * v - g * g + l * l - b * b)) /
							(2 * (d - l) * (g - v) - 2 * (b - l) * (y - v)),
						x =
							((b - l) * (d * d - l * l + y * y - v * v) + (d - l) * (l * l - b * b + v * v - g * g)) /
							(2 * (y - v) * (b - l) - 2 * (g - v) * (d - l)),
						m = ((h = Math[St]((l - E) * (l - E) + (v - x) * (v - x))), Math[Rt](c.y - x, c.x - E)),
						p = Math[Rt](_.y - x, _.x - E) - m;
					p < 0 && (p += 2 * Math.PI),
						(function(t, i, n, e, s, h, r) {
							var a, o, f, c, u, _, l, d, b, v;
							if (
								(Math.abs(e) > 2 * Math.PI && (e = 2 * Math.PI),
								(a = e / (c = Math[T](Math.abs(e) / (Math.PI / 4)))),
								(o = n),
								0 < c)
							) {
								(u = t + Math.cos(o) * s), (_ = i + Math.sin(o) * h), moveTo ? r[_a](u, _) : r[la](u, _);
								for (var y = 0; y < c; y++)
									(f = (o += a) - a / 2),
										(l = t + Math.cos(o) * s),
										(d = i + Math.sin(o) * h),
										(b = t + Math.cos(f) * (s / Math.cos(a / 2))),
										(v = i + Math.sin(f) * (h / Math.cos(a / 2))),
										r[ov](b, v, l, d);
							}
						})(E, x, m, p, h, h, n);
				})(this, e, t);
			},
			drawEdge: function(t, i, n, e, s, h, r, a) {
				if (e == qB[pT]) {
					var o = (r.x + a.x) / 2,
						f = (r.y + a.y) / 2,
						c = r.x - a.x,
						u = r.y - a.y,
						_ = Math[St](c * c + u * u),
						l = Math[Rt](u, c);
					(l += Math.PI / 6), 30 < (_ *= 0.04) && (_ = 30);
					var d = Math.cos(l) * _,
						b = Math.sin(l) * _;
					return t[la](o - b, f + d), void t.lineTo(o + b, f - d);
				}
				var v = (function(t, i, n, e, s, h) {
					if (i[Rb]()) return i[Pb];
					var a,
						r,
						o,
						f,
						c,
						u,
						_,
						v,
						y,
						l,
						d,
						b,
						g,
						E,
						x,
						m,
						p = i[Fb];
					if (
						(m = p) == qB[VT] ||
						m == qB[TT] ||
						m == qB[PT] ||
						m == qB[OT] ||
						m == qB[IT] ||
						m == qB[LT] ||
						m == qB[NT] ||
						m == qB.EDGE_TYPE_EXTEND_BOTTOM ||
						m == qB[CT] ||
						m == qB[ST] ||
						m == qB.EDGE_TYPE_ELBOW_HORIZONTAL ||
						m == qB[AT]
					) {
						var w =
							((a = p),
							(f = t),
							(c = s),
							(u = h),
							(E = (function(t, i) {
								if (null != a) {
									if (
										a == qB[wT] ||
										a == qB[TT] ||
										a == qB.EDGE_TYPE_HORIZONTAL_VERTICAL ||
										a == qB[NT] ||
										a == qB.EDGE_TYPE_EXTEND_RIGHT
									)
										return !0;
									if (a == qB[AT] || a == qB[OT] || a == qB[IT] || a == qB[LT] || a == qB[MT]) return !1;
								}
								var n,
									e,
									s,
									h,
									r =
										((s = t),
										(h = i),
										Math.max(s.x + (s[$t] || 0), h.x + (h.width || 0)) -
											Math.min(s.x, h.x) -
											(s.width || 0) -
											(h.width || 0));
								return (
									((n = t),
									(e = i),
									Math.max(n.y + (n[Xt] || 0), e.y + (e[Xt] || 0)) -
										Math.min(n.y, e.y) -
										(n.height || 0) -
										(e.height || 0)) <= r
								);
							})((r = n), (o = e))),
							(x = []),
							!a || (a != qB[ST] && a != qB[wT] && a != qB[AT])
								? (function(t, i, n, e, s, h, E, x) {
										var r,
											a,
											o,
											f,
											c,
											u,
											_ = h[Sy](v$[np]),
											l = null == _;
										if (null != _) {
											var d = new JF()[DT](i).union(n);
											d.intersects(_) ||
												((r = _.x),
												(a = _.y),
												(o = d.y),
												(f = d.x),
												(c = d[Bt]),
												(u = d[kt]),
												(s = !(
													(a < o && f - r < o - a && r - u < o - a) ||
													(c < a && f - r < a - c && r - u < a - c)
												)));
										} else
											_ = (function(t, i, n, e, s) {
												if (t == qB[PT]) return { x: x.x, y: E.y };
												if (t == qB.EDGE_TYPE_VERTICAL_HORIZONTAL) return { x: E.x, y: x.y };
												var h, r, a, o, f, c, u, _;
												if (
													null != t &&
													(t == qB.EDGE_TYPE_EXTEND_TOP ||
														t == qB[NT] ||
														t == qB[MT] ||
														t == qB.EDGE_TYPE_EXTEND_RIGHT)
												) {
													var l = Math.min(n.y, e.y),
														d = Math.min(n.x, e.x),
														b = Math.max(n[Bt], e.bottom),
														v = Math.max(n.right, e[kt]);
													if (((h = s.getStyle(v$.EDGE_EXTEND)), t == qB.EDGE_TYPE_EXTEND_TOP))
														return new BF((d + v) / 2, l - h);
													if (t == qB.EDGE_TYPE_EXTEND_LEFT) return new BF(d - h, (l + b) / 2);
													if (t == qB[MT]) return new BF((d + v) / 2, b + h);
													if (t == qB[CT]) return new BF(v + h, (l + b) / 2);
												}
												if (
													(h = s[Sy](v$.EDGE_SPLIT_BY_PERCENT)
														? ((r = i),
														  (a = n),
														  (o = e),
														  (f = s[Sy](v$[ix])),
														  (c = f),
														  (u = a),
														  (_ = o),
														  (r ? C$(c, u.x, u[kt], _.x, _[kt]) : C$(c, u.y, u[Bt], _.y, _[Bt])) * f)
														: s[Sy](v$.EDGE_SPLIT_VALUE)) == Number[RT] ||
													h == Number[FT]
												)
													return new BF(e.x + e.width / 2, e.y + e.height / 2);
												if (0 == h) return new BF(n.x + n.width / 2, n.y + n[Xt] / 2);
												if (i) {
													var y = n.x + n[kt] < e.x + e[kt];
													return new BF(R$(y, h, n.x, n.width), n.y + n[Xt] / 2);
												}
												var g = n.y + n[Bt] < e.y + e[Bt];
												return new BF(n.x + n.width / 2, R$(g, h, n.y, n[Xt]));
											})(t, s, i, n, h);
										s
											? (function(t, i, n, e, s, h, r) {
													var a = Math.max(t.x, i.x),
														o = Math.min(t.x + t[$t], i.x + i[$t]),
														f = null != n ? n.x : o + (a - o) / 2,
														c = h ? h.y : t.y + t[Xt] / 2,
														u = r ? r.y : i.y + i[Xt] / 2;
													if (
														(0 == s &&
															null != n &&
															(n.y >= t.y && n.y <= t.y + t[Xt] && (c = n.y),
															n.y >= i.y && n.y <= i.y + i[Xt] && (u = n.y)),
														F$(i, f, c) || F$(t, f, c) || e[L](new BF(f, c)),
														F$(i, f, u) || F$(t, f, u) || e.push(new BF(f, u)),
														0 == e[F])
													)
														if (null != n) F$(i, f, n.y) || F$(t, f, n.y) || e[L](new BF(f, n.y));
														else {
															var _ = Math.max(t.y, i.y),
																l = Math.min(t.y + t.height, i.y + i[Xt]);
															e[L](new BF(f, _ + (l - _) / 2));
														}
											  })(i, n, _, e, l, E, x)
											: (function(t, i, n, e, s, h, r) {
													var a = Math.max(t.y, i.y),
														o = Math.min(t.y + t.height, i.y + i[Xt]),
														f = null != n ? n.y : o + (a - o) / 2,
														c = h ? h.x : t.x + t.width / 2,
														u = r ? r.x : i.x + i.width / 2;
													if (
														(0 == s &&
															null != n &&
															(n.x >= t.x && n.x <= t.x + t[$t] && (c = n.x),
															n.x >= i.x && n.x <= i.x + i.width && (u = n.x)),
														F$(i, c, f) || F$(t, c, f) || e[L](new BF(c, f)),
														F$(i, u, f) || F$(t, u, f) || e.push(new BF(u, f)),
														0 == e[F])
													)
														if (null != n) F$(i, n.x, f) || F$(t, n.x, f) || e[L](new BF(n.x, f));
														else {
															var _ = Math.max(t.x, i.x),
																l = Math.min(t.x + t[$t], i.x + i.width);
															e[L](new BF(_ + (l - _) / 2, f));
														}
											  })(i, n, _, e, l, E, x);
								  })(a, r, o, x, E, f, c, u)
								: ((_ = E),
								  (v = r),
								  (y = o),
								  (l = x),
								  (d = f[Sy](v$.EDGE_EXTEND)),
								  (b = c),
								  (g = u),
								  _
										? (function(t, i, n, e) {
												var s = y.x + y.width < v.x,
													h = v.x + v[$t] < y.x,
													r = s ? v.x : v.x + v[$t],
													a = n.y,
													o = h ? y.x : y.x + y.width,
													f = e.y,
													c = i,
													u = s ? -c : c,
													_ = new BF(r + u, a),
													l = new BF(o + (u = h ? -c : c), f);
												if (s == h) {
													var d = s ? Math.min(r, o) - i : Math.max(r, o) + i;
													t[L](new BF(d, a)), t[L](new BF(d, f));
												} else if (_.x < l.x == s) {
													var b = a + (f - a) / 2;
													t.push(_), t.push(new BF(_.x, b)), t[L](new BF(l.x, b)), t.push(l);
												} else t.push(_), t[L](l);
										  })(l, d, b, g)
										: (function(t, i, n, e) {
												var s = y.y + y[Xt] < v.y,
													h = v.y + v[Xt] < y.y,
													r = n.x,
													a = s ? v.y : v.y + v[Xt],
													o = e.x,
													f = h ? y.y : y.y + y.height,
													c = i,
													u = s ? -c : c,
													_ = new BF(r, a + u),
													l = new BF(o, f + (u = h ? -c : c));
												if (s == h) {
													var d = s ? Math.min(a, f) - i : Math.max(a, f) + i;
													t[L](new BF(r, d)), t.push(new BF(o, d));
												} else if (_.y < l.y == s) {
													var b = r + (o - r) / 2;
													t.push(_), t[L](new BF(b, _.y)), t[L](new BF(b, l.y)), t[L](l);
												} else t[L](_), t.push(l);
										  })(l, d, b, g)),
							x);
						if (!w || !w.length) return null;
						GR(w, s, 0),
							w[L](h),
							p != qB[ST] &&
								(function(t, i) {
									var n = t[F];
									if (!(n < 3)) {
										var e = i[Sy](v$.EDGE_CORNER);
										if (e != qB[BT]) {
											var s,
												h,
												r = i[Sy](v$[kT]),
												a = 0,
												o = 0;
											r && (vF(r) ? (a = o = r) : ((a = r.x || 0), (o = r.y || 0)));
											for (var f, c, u = t[0], _ = t[1], l = 2; l < n; l++) {
												var d = t[l],
													b = _.x - u.x,
													v = _.y - u.y,
													y = d.x - _.x,
													g = d.y - _.y,
													E = !v || (-Nk < v && v < Nk);
												(((!b || (-Nk < b && b < Nk)) && (!g || (-Nk < g && g < Nk))) ||
													(E && (!y || (-Nk < y && y < Nk)))) &&
													((c = E
														? ((s = Math.min(2 == l ? Math.abs(b) : Math.abs(b) / 2, a)),
														  (h = Math.min(l == n - 1 ? Math.abs(g) : Math.abs(g) / 2, o)),
														  (f = new BF(_.x - (0 < b ? s : -s), _.y)),
														  new BF(_.x, _.y + (0 < g ? h : -h)))
														: ((s = Math.min(l == n - 1 ? Math.abs(y) : Math.abs(y) / 2, a)),
														  (h = Math.min(2 == l ? Math.abs(v) : Math.abs(v) / 2, o)),
														  (f = new BF(_.x, _.y - (0 < v ? h : -h))),
														  new BF(_.x + (0 < y ? s : -s), _.y))),
													WR(t, _),
													l--,
													n--,
													(f.x == u.x && f.y == u.y) || (GR(t, f, l), l++, n++),
													e == qB.EDGE_CORNER_BEVEL
														? (GR(t, c, l), l++, n++)
														: e == qB.EDGE_CORNER_ROUND && (GR(t, [_, c], l), l++, n++)),
													(u = _),
													(_ = d);
											}
										}
									}
								})(w, t);
						for (var T = [], N = w[F], A = 1; A < N - 1; A++) {
							var O = w[A];
							gF(O) ? T.push(new fG(hG, [O[0].x, O[0].y, O[1].x, O[1].y])) : T[L](new fG(sG, [O.x, O.y]));
						}
						return T;
					}
					if (i[GT]) {
						var I = t._22();
						if (!I) return;
						return (function(t, i, n, e, s, h) {
							(i = WF(e, i.x, i.y, n.x, n.y)), (n = WF(s, n.x, n.y, i.x, i.y));
							var r = Math.PI / 2 + Math[Rt](n.y - i.y, n.x - i.x),
								a = t * Math.cos(r),
								o = t * Math.sin(r);
							(i.x += a), (i.y += o), (n.x += a), (n.y += o);
							var f = n.x - i.x,
								c = n.y - i.y;
							if (h != qB[Br])
								return h != qB[WT]
									? [new fG(rG, [i.x + 0.25 * f, i.y + 0.25 * c, i.x + 0.75 * f, i.y + 0.75 * c, M, M])]
									: (10 < Math[St](f * f + c * c) &&
											((r = Math[Rt](n.y - i.y, n.x - i.x)),
											(f = 5 * Math.cos(r)),
											(c = 5 * Math.sin(r)),
											(i.x += f),
											(i.y += c),
											(n.x -= f),
											(n.y -= c)),
									  [new fG(sG, [i.x, i.y]), new fG(sG, [n.x, n.y])]);
							var u = [new fG(eG, [i.x, i.y]), new fG(sG, [n.x, n.y])];
							return (u._linkTerminalPoint = !1), u;
						})(I, s, h, n, e, t[Sy](v$[UE]));
					}
				})(this, this[Qi], s, h, r, a);
				v && (t._hY = v);
			},
			_22: function() {
				if (!this[Qi].isBundleEnabled()) return null;
				var t = this[Qi].getEdgeBundle(!0);
				if (!t || !t[$T](this[My]) || !t._j1) return null;
				var i = t[XT](this);
				return t[HT](this[Ed]) || (i = -i), i;
			},
			checkBundleLabel: function() {
				var t = this[YT]();
				t
					? (this[Lp] || this[JT](), (this.bundleLabel._k1 = !0), (this[Lp].data = t))
					: this[Lp] && ((this[Lp]._k1 = !1), (this[Lp][Qi] = null));
			},
			createBundleLabel: function() {
				var t = new L$();
				(t.editable = !1), (this.bundleLabel = t), this[jp](this[Lp]), w$[lT](this);
			},
			getBundleLabel: function() {
				return this[My][YT](this[Qi]);
			},
			doValidate: function() {
				return this._1G && ((this._1G = !1), this[ZT]()), this[UT](), YR(this, S$, by);
			},
			_4F: function() {
				(this._1G = !0), this[$p]();
			},
			_$v: function(t, i, n) {
				var e = this._dD.onBindingPropertyChange(this, t, i, n);
				return (
					(e = y$.onBindingPropertyChange(this, t, i, n) || e),
					this[Lp] && this[Lp][Ed] && (e = w$[Yp](this, t, i, n) || e),
					p$.onBindingPropertyChange(this, t, i, n) || e
				);
			},
		}),
		XR(S$, A$),
		(S$[jT] = function(t, i, n, e) {
			if ((t[_a](i.x, i.y), e && e != qB[zT])) {
				if (e == qB[IT]) t[la](i.x, n.y);
				else if (e == qB[PT]) t.lineTo(n.x, i.y);
				else if (0 == e.indexOf(qB[VT])) {
					r = e == qB.EDGE_TYPE_ORTHOGONAL_HORIZONTAL || (e != qB[OT] && Math.abs(i.x - n.x) > Math.abs(i.y - n.y));
					var s = (i.x + n.x) / 2,
						h = (i.y + n.y) / 2;
					r ? (t[la](s, i.y), t[la](s, n.y)) : (t.lineTo(i.x, h), t[la](n.x, h));
				} else if (0 == e[v](qB.EDGE_TYPE_ELBOW)) {
					var r,
						a = P$[v$[QE]] || 0;
					(r = e == qB[wT] || (e != qB[AT] && Math.abs(i.x - n.x) > Math.abs(i.y - n.y)))
						? (t[la](i.x + a, i.y), t[la](n.x - a, n.y))
						: (t.lineTo(i.x, i.y + a), t[la](n.x, n.y - a));
				} else if (0 == e[v](KT))
					if (((a = P$[v$.EDGE_EXTEND] || 0), e == qB[LT])) {
						var o = Math.min(i.y, n.y) - a;
						t[la](i.x, o), t[la](n.x, o);
					} else if (e == qB[MT]) (o = Math.max(i.y, n.y) + a), t.lineTo(i.x, o), t.lineTo(n.x, o);
					else if (e == qB[NT]) {
						var f = Math.min(i.x, n.x) - a;
						t[la](f, i.y), t[la](f, n.y);
					} else e == qB[CT] && ((f = Math.max(i.x, n.x) + a), t.lineTo(f, i.y), t[la](f, n.y));
				else if (e == qB.EDGE_TYPE_ZIGZAG) {
					(s = (i.x + n.x) / 2), (h = (i.y + n.y) / 2);
					var c = i.x - n.x,
						u = i.y - n.y,
						_ = Math.sqrt(c * c + u * u),
						l = Math[Rt](u, c);
					(l += Math.PI / 6), 30 < (_ *= 0.04) && (_ = 30);
					var d = Math.cos(l) * _,
						b = Math.sin(l) * _;
					t.lineTo(s - b, h + d), t[la](s + b, h - d);
				}
				t[la](n.x, n.y);
			} else t[la](n.x, n.y);
		}),
		OF(S$.prototype, {
			length: {
				get: function() {
					return this.path ? this[gd][F] : 0;
				},
			},
		}),
		(S$.prototype[Or] = function(t, i, n) {
			var e = _G(this[gd], t, i, this.data[QT], n);
			if (!e) return !1;
			var s = e[ET];
			if (2 < s.length) {
				var h = this[Qi],
					r = s[s[F] - 1];
				r[wi] == sG ? (h[xT] = s[w](1, s.length - 2)) : (e[qT] && (r.invalidTerminal = !0), (h[xT] = s[w](1, s[F] - 1)));
			}
		}),
		(D$.prototype = {
			_2O: null,
			image: null,
			initialize: function() {
				YR(this, D$, dy), this[tN](), x$[lT](this);
			},
			_dE: function() {
				this[Qi][mo] ? this[mo] && (this[Za] = this.image) : this[im] && (this[Za] = this[im]);
			},
			_oXZ: function() {
				(this.image = new I$()), this.addChild(this[mo], 0), this._dE();
			},
			doValidate: function() {
				this[Za] &&
					(this instanceof U$ && !this[Ed].groupImage && this._5W()
						? (this[Za][qc] = !1)
						: ((this.body[qc] = null != this._2O), (this[Za][ev] = this._2O)));
				var t = this.$data[Yb],
					i = 0,
					n = 0;
				t && ((i = t.x), (n = t.y));
				var e = this.$x != i || this.$y != n;
				return e && (this[nw] = !0), (this.$x = i), (this.$y = n), A$[N][by][m](this) || e;
			},
			_$v: function(t, i, n) {
				var e = this._dD[Yp](this, t, i, n);
				return (e = y$[Yp](this, t, i, n) || e), x$[Yp](this, t, i, n) || e;
			},
			getLinkablePorts: function() {
				return this[Qi].linkablePorts;
			},
			getLinkableBounds: function() {
				return this[iN];
			},
			getDefaultPortPoint: function(t) {
				return qF(UF[li], t || this[gT]());
			},
			getPortPoint: function(t, i) {
				return t
					? ((i = i || this[gT]())[fw]
							? ((n = qF(t, i[fw])),
							  i[Mt] && (n = ik(n.x, n.y, i[Mt], i.rotateX || 0, i.rotateY || 0)),
							  (n.x += i.tx || 0),
							  (n.y += i.ty || 0))
							: (n = qF(t, i)),
					  (n[nN] = t),
					  n)
					: this.getDefaultPortPoint(i);
				var n;
			},
			getPortPoints: function() {
				var t = this.getLinkablePorts();
				if (t && Array.isArray(t)) {
					var i = [],
						n = this[gT]();
					return (
						t.forEach(
							function(t) {
								i[L](this.getPortPoint(t, n));
							}[Ie](this)
						),
						i
					);
				}
			},
		}),
		XR(D$, A$);
	var P$ = {};
	function C$(t, i, n, e, s) {
		var h,
			r,
			a,
			o,
			f = ((h = i), (r = n), (a = e), (o = s), Math.max(r, o) - Math.min(h, a) - (r - h + o - a)),
			c = i + n < e + s;
		if (0 < f) {
			if (1 == t) return f + (s - e) / 2;
			if (0 <= t && t < 1) return f;
			if (t < 0) return c ? e - i : n - s;
		}
		return (c && 0 < t) || (!c && t < 0) ? Math.abs(n - s) : Math.abs(i - e);
	}
	function R$(t, i, n, e) {
		return t == 0 < i ? n + e + Math.abs(i) : n - Math.abs(i);
	}
	function F$(t, i, n) {
		return i >= t.x && i <= t[kt] && n >= t.y && n <= t[Bt];
	}
	function B$(t, i) {
		var n, e;
		i && i[$t] && i.height ? ((n = i[$t]), (e = i.height)) : (n = e = isNaN(i) ? DF[Jr] : i);
		var s = i$[eN](t, -n, -e / 2, n, e);
		return s || ((s = new cG()).moveTo(-n, -e / 2), s[la](0, 0), s[la](-n, e / 2)), s;
	}
	function k$(t, i) {
		var n = Math.sin(i),
			e = Math.cos(i),
			s = t.x,
			h = t.y;
		return (t.x = s * e - h * n), (t.y = s * n + h * e), t;
	}
	function G$(t, i, n, e, s, h) {
		var r = Math[Rt](e - i, n - t),
			a = new BF(s, h);
		return (a[Mt] = r), k$(a, r), (a.x += t), (a.y += i), a;
	}
	function W$(t, i, n) {
		if ((GR(t, new fG(eG, [i.x, i.y]), 0), n)) {
			if (1 < t[F]) {
				var e = t[t[F] - 1];
				if (hG == e[wi] && (e.invalidTerminal || e[Fs][2] === M || null === e[Fs][2]))
					return (e.points[2] = n.x), (e.points[3] = n.y), void (e.invalidTerminal = !0);
				if (rG == e[wi] && (e[nf] || e.points[4] === M || null === e[Fs][4]))
					return (e.points[4] = n.x), (e[Fs][5] = n.y), void (e[nf] = !0);
			}
			t.push(new fG(sG, [n.x, n.y]));
		}
	}
	function $$(t, i, n, e, s, h) {
		if (s === M) {
			var r = Math[Rt](n.y - e.y, n.x - e.x);
			(s = Math.cos(r)), (h = Math.sin(r));
		}
		for (n = { x: n.x, y: n.y }, i[Zt](n.x, n.y) || (n = WF(i, e.x, e.y, n.x, n.y)); ; ) {
			if (!i[Zt](n.x, n.y)) return e;
			if (t[xo](n.x - s, n.y - h, DF.LOOKING_EDGE_ENDPOINT_TOLERANCE)) {
				(e.x = n.x - s / 2), (e.y = n.y - h / 2);
				break;
			}
			(n.x -= s), (n.y -= h);
		}
		return e;
	}
	function X$(t, i, n, e, s, h) {
		return i[Zt](n.x, n.y)
			? !1 === h
				? H$(t, i, n, e, s)
				: H$(t, i, { x: n.x, y: n.y, perX: e, perY: s }, e, s) || H$(t, i, n, -e, -s)
			: (n = (function t(i, n, e, s, h, r) {
					var a,
						o,
						f = n < i.x,
						c = n > i[kt],
						u = e < i.y,
						_ = e > i.bottom;
					return f && 0 < s && (a = e + ((i.x - n) * h) / s) >= i.y && a <= i[Bt]
						? { x: i.x, y: a, perX: s, perY: h }
						: c && s < 0 && (a = e + ((i[kt] - n) * h) / s) >= i.y && a <= i[Bt]
						? { x: i[kt], y: a, perX: s, perY: h }
						: u && 0 < h && (o = n + ((i.y - e) * s) / h) >= i.x && o <= i[kt]
						? { x: o, y: i.y, perX: s, perY: h }
						: _ && h < 0 && (o = n + ((i[Bt] - e) * s) / h) >= i.x && o <= i.right
						? { x: o, y: i[Bt], perX: s, perY: h }
						: !1 !== r
						? t(i, n, e, -s, -h, !1)
						: void 0;
			  })(i, n.x, n.y, e, s, h))
			? H$(t, i, n, n[sN], n[hN])
			: void 0;
	}
	function H$(t, i, n, e, s) {
		for (;;) {
			if (!i[Zt](n.x, n.y)) return;
			if (t.hitTest(n.x + e, n.y + s)) break;
			(n.x += e), (n.y += s);
		}
		return n;
	}
	function Y$(t) {
		return Zk(t)
			? t
			: t[rN](/.(gif|jpg|jpeg|png)$/gi) || /^data:image\/(\w+\+?\w+);base64,/i[A](t)
			? t
			: (t = IF(t)) instanceof Object && t.draw
			? t
			: void 0;
	}
	function J$(t, i) {
		(this._$t = new cB()),
			this._$t.on(function(t) {
				Av == t.kind && this[Tb]();
			}, this),
			(this._1E = new cB()),
			this._1E.addListener(function(t) {
				!this[Av] || (t[Ti] != uB[an] && t[Ti] != uB.KIND_REMOVE) || this[eb].contains(this[Av]) || (this[Av] = null);
			}, this),
			(this._8 = new cB()),
			(this._12 = new cB()),
			(this._$k = new cB()),
			(this._$n = new cB()),
			(this[eb] = i || new a$()),
			(this._9L = new NW(this, t)),
			(this._36 = new PX(this)),
			(this._19 = new cB()),
			(this._onresize = NB(
				u,
				bN,
				function(t) {
					this[vN]();
				},
				!1,
				this
			)),
			(this._9L._oZ9[yN] = function(t) {
				this[yN](t);
			}[Ie](this)),
			(this._9L[$l][gN] = function(t) {
				this.ondragover(t);
			}[Ie](this));
	}
	function Z$(t) {
		for (var i = t[Fi]; i; ) {
			if (i[Jd]) return i;
			i = i.parent;
		}
		return null;
	}
	function U$(t, i) {
		HR(this, U$, arguments);
	}
	(P$[v$[$r]] = DF.SELECTION_COLOR),
		(P$[v$[wy]] = DF[wy]),
		(P$[v$[Wr]] = DF[Wr]),
		(P$[v$.SELECTION_TYPE] = qB[Gr]),
		(P$[v$.SELECTION_SHADOW_OFFSET_X] = 2),
		(P$[v$[tm]] = 2),
		(P$[v$[Ig]] = DF[Ig]),
		(P$[v$[pg]] = UF[di]),
		(P$[v$.LABEL_ANCHOR_POSITION] = UF[ui]),
		(P$[v$[vm]] = new ZF(0, 2)),
		(P$[v$[Fg]] = 8),
		(P$[v$.LABEL_RADIUS] = 8),
		(P$[v$.LABEL_POINTER] = !0),
		(P$[v$[jg]] = 0),
		(P$[v$[hm]] = cw),
		(P$[v$[tE]] = !0),
		(P$[v$[am]] = null),
		(P$[v$[qg]] = null),
		(P$[v$.EDGE_COLOR] = aN),
		(P$[v$.EDGE_WIDTH] = 1.5),
		(P$[v$.EDGE_FROM_AT_EDGE] = !0),
		(P$[v$.EDGE_TO_AT_EDGE] = !0),
		(P$[v$[cE]] = NF(3438210798)),
		(P$[v$.GROUP_STROKE] = 1),
		(P$[v$[bE]] = cw),
		(P$[v$.ARROW_TO] = !0),
		(P$[v$[gx]] = DF.ARROW_SIZE),
		(P$[v$[Fx]] = DF[Jr]),
		(P$[v$[VE]] = 10),
		(P$[v$.EDGE_CORNER_RADIUS] = 8),
		(P$[v$.EDGE_CORNER] = qB.EDGE_CORNER_ROUND),
		(P$[v$[oN]] = !0),
		(P$[v$.EDGE_EXTEND] = 20),
		(P$[v$[ix]] = 0.5),
		(P$[v$[ex]] = 20),
		(P$[v$[fN]] = 20),
		(P$[v$[xE]] = UF[di]),
		(P$[v$[cN]] = UF.CENTER_TOP),
		(P$[v$[mE]] = uN),
		(P$[v$[Pm]] = 1),
		(P$[v$[Cm]] = _N),
		(P$[v$[Tm]] = DF.BLEND_MODE),
		(P$[v$[lN]] = 1),
		(DF[dN] = 2),
		OF(
			(J$[N] = {
				originAtCenter: !0,
				editable: !1,
				ondragover: function(t) {
					QB[EN](t);
				},
				getDropInfo: function(t, i) {
					var n = null;
					if (i)
						try {
							n = JSON[Mh](i);
						} catch (t) {}
					return n;
				},
				ondrop: function(t) {
					var i = t[xN];
					if (i) {
						var n = i[Os](mN),
							e = this.getDropInfo(t, n);
						e || (((e = {})[mo] = i[Os](mo)), (e[wi] = i[Os](wi)), (e[im] = i[Os](im)), (e[Wv] = i.getData(Wv)));
						var s = this.globalToLocal(t);
						if (
							((s = this[Kl](s.x, s.y)),
							!(this.dropAction instanceof Function && !1 === this.dropAction[m](this, t, s, e)) &&
								(e.image || e[im] || e[wi]))
						) {
							var h,
								r = e[mo],
								a = e[wi],
								o = e.label,
								f = e[Wv];
							if (
								(QB[EN](t),
								a && pN != a
									? wN == a
										? (h = this.createText(o, s.x, s.y))
										: cv == a
										? (h = this[TN](o, s.x, s.y))
										: $v == a
										? ((h = this.createGroup(o, s.x, s.y)), (f = f && Y$(f)) && (h[Wv] = f))
										: (a = IF(a)) instanceof Function &&
										  a[N] instanceof QW &&
										  (((h = new a())[To] = o), (h[R_] = new BF(s.x, s.y)), this[cb].add(h))
									: (h = this[NN](o, s.x, s.y)),
								h)
							) {
								if (((r = r && Y$(r)) && (h.image = r), t[v_])) {
									var c = this.getElementByMouseEvent(t);
									c && this._oZM(c) && (h[Fi] = c);
								}
								if (e[AN]) for (var u in e[AN]) h[u] = e.properties[u];
								if (e[ON]) for (var u in e.clientProperties) h.set(u, e[ON][u]);
								if ((e[IN] && h.putStyles(e[IN]), !1 === this.onElementCreated(h, t, e))) return !1;
								var _ = new DX(this, DX.ELEMENT_CREATED, t, h);
								return this[LN](_), h;
							}
						}
					}
				},
				_oZM: function(t) {
					return t[Jd] || t instanceof o$ || t[MN];
				},
				enableDoubleClickToOverview: !0,
				_9L: null,
				_$t: null,
				_1E: null,
				_8: null,
				_$n: null,
				_12: null,
				_$k: null,
				_1S: function(t) {
					return this._$t.beforeEvent(t);
				},
				_54: function(t) {
					this._$t.onEvent(t), pl == t.kind && this[SN]();
				},
				isVisible: function(t) {
					return this._9L._fT(t);
				},
				isMovable: function(t) {
					return (t instanceof QW || (t instanceof jW && t[Rb]())) && !1 !== t[DN];
				},
				isSelectable: function(t) {
					return !1 !== t[PN];
				},
				isEditable: function(t) {
					return !1 !== t[CN];
				},
				isRotatable: function(t) {
					return !1 !== t[pm];
				},
				isResizable: function(t) {
					return !1 !== t[RN];
				},
				canLinkFrom: function(t) {
					return !1 !== t[FN] && !1 !== t[BN];
				},
				canLinkTo: function(t, i) {
					return !(
						!1 === t[FN] ||
						!1 === t.canLinkTo ||
						(i instanceof QB.Group && t[xb](i)) ||
						(t instanceof QB.Group && i[xb](t))
					);
				},
				isEndPointEditable: function(t, i) {
					return !1 !== t.endPointEditable;
				},
				createNode: function(t, i, n) {
					var e = new QW(t, i, n);
					return this[cb].add(e), e;
				},
				createText: function(t, i, n) {
					var e = new f$(t, i, n);
					return this[cb].add(e), e;
				},
				createShapeNode: function(t, i, n, e) {
					vF(i) && ((e = n), (n = i), (i = null));
					var s = new t$(t, i);
					return (s[Yb] = new BF(n, e)), this[cb].add(s), s;
				},
				createGroup: function(t, i, n) {
					var e = new o$(t, i, n);
					return this[cb].add(e), e;
				},
				createEdge: function(t, i, n) {
					if (t instanceof QW) {
						var e = n;
						(n = i), (i = t), (t = e);
					}
					var s = new jW(i, n);
					return t && (s[gb] = t), this[cb].add(s), s;
				},
				addElement: function(t, i) {
					this[cb].add(t),
						i &&
							t[p]() &&
							t[wb](function(t) {
								this[kN](t, i);
							}, this);
				},
				removeElement: function(t) {
					this[cb][k](t);
				},
				clear: function() {
					this._mFModel.clear();
				},
				getStyle: function(t, i) {
					var n = t._l3[i];
					return n !== M ? n : this[GN](i);
				},
				getDefaultStyle: function(t) {
					if (this._l3) {
						var i = this._l3[t];
						if (i !== M) return i;
					}
					return P$[t];
				},
				_34: function(t, i) {
					if (!this[WN] || this.limitedBounds[Zt](this[fb])) return i && i(), !1;
					(t = this._2E()), this[$N]();
					var n,
						e,
						s,
						h = this.viewportBounds,
						r = this[WN],
						a = h.width / this.limitedBounds.width,
						o = h[Xt] / this[WN][Xt];
					if (a <= 1 && o <= 1)
						return (
							(n = r.left > h[Kt] ? r.left : r[kt] < h[kt] ? h[Kt] - (h.right - r[kt]) : h[Kt]),
							(e = r.top > h.top ? r.top : r.bottom < h[Bt] ? h.top - (h.bottom - r[Bt]) : h.top),
							void this[ed](-n * this[Na], -e * this[Na], this[Na], !1, i)
						);
					var f = o < a;
					(s = Math.max(a, o)),
						f
							? ((n = r.x),
							  (e = r.y + ((h.top - r.top) * (1 - s)) / s) >= r.y
									? (e = r.y)
									: e < r.bottom - h[Xt] / s && (e = r.bottom - h[Xt] / s))
							: ((e = r.y),
							  (n = r.x + ((h[Kt] - r[Kt]) * (1 - s)) / s) >= r.x
									? (n = r.x)
									: n < r[kt] - h[$t] / s && (n = r[kt] - h[$t] / s)),
						(n *= s *= this[Na]),
						(e *= s),
						this[ed](-n, -e, s, t, i);
				},
				checkLimitedBounds: function(t) {
					if (this[XN] || !this.limitedBounds || this[WN][Zt](this[fb])) return !1;
					(this[XN] = !0),
						this[HN](function() {
							this._34(
								t,
								function() {
									this[XN] = !1;
								}.bind(this)
							);
						}, this);
				},
				zoomByMouseEvent: function(t, i, n, e) {
					var s = this[YN](t);
					return G == typeof i
						? this.zoomAt(Math.pow(1.1, i), s.x, s.y, n, e)
						: i
						? this[JN](s.x, s.y, n, e)
						: this[ZN](s.x, s.y, n, e);
				},
				resetScale: 1,
				translate: function(t, i, n) {
					return this.translateTo(this.tx + t, this.ty + i, this[Na], n);
				},
				translateTo: function(t, i, n, e, s) {
					if (((n = n && Math.min(this[go], Math.max(this[UN], n))), !e)) {
						var h = this._9L[jN](t, i, n);
						return s && s(), h;
					}
					this._6G()._n1(t, i, n, e, s);
				},
				centerTo: function(t, i, n, e, s) {
					return (
						(!n || n <= 0) && (n = this[Na]),
						e === M && (e = this._2E()),
						this.translateTo(this.width / 2 - t * n, this[Xt] / 2 - i * n, n, e, s)
					);
				},
				moveToCenter: function(t, i) {
					if (!1 !== arguments[2] && this._9L.isInvalidate())
						return this._9L._oXW || (i = !1), this[HN](this.moveToCenter.bind(this, t, i, !1));
					var n = this.bounds;
					this.centerTo(n.cx, n.cy, t, i);
				},
				zoomToOverview: function(t, i) {
					if (!1 !== arguments[2] && this._9L.isInvalidate())
						return this._9L[Le] || (t = !1), this[HN](this[zN][Ie](this, t, i, !1));
					var n = this._9L._1O();
					n && (i && (n[Na] = Math.min(n[Na], i)), this[VN](n.cx, n.cy, n[Na], t));
				},
				_2E: function() {
					return !!this._9L._oXW && (this[KN] === M || null === this.zoomAnimation ? DF.ZOOM_ANIMATE : this[KN]);
				},
				zoomAt: function(t, i, n, e, s) {
					e === M && (e = this._2E()), i === M && (i = this[$t] / 2), (i = i || 0), n === M && (n = this[Xt] / 2), (n = n || 0);
					var h = this[Na];
					return (
						(i = ((t = Math.min(this.maxScale, Math.max(this[UN], h * t))) * (this.tx - i)) / h + i),
						(n = (t * (this.ty - n)) / h + n),
						this[ed](i, n, t, e, s)
					);
				},
				zoomOut: function(t, i, n, e) {
					return this[QN](1 / this.scaleStep, t, i, n, e);
				},
				zoomIn: function(t, i, n, e) {
					return this.zoomAt(this[qN], t, i, n, e);
				},
				_6G: function() {
					return this[tA] || (this[tA] = new nX(this)), this[tA];
				},
				onAnimationStart: function() {},
				onAnimationEnd: function() {},
				isAnimating: function() {
					return this[tA] && this[tA]._fL();
				},
				enableInertia: !0,
				_oX6: function(t, i) {
					return this._6G()._iU(t || 0, i || 0);
				},
				stopAnimation: function() {
					this._panAnimation && this[tA]._nN();
				},
				getUI: function(t) {
					return LF(t) ? this._9L._3V(t) : this._9L._mG(t);
				},
				getUIByMouseEvent: function(t) {
					return this._9L._3V(t);
				},
				hitTest: function(t) {
					return this._9L[xo](t);
				},
				globalToLocal: function(t) {
					return this._9L._8N(t);
				},
				toCanvas: function(t, i) {
					return this._9L._iM(t, i);
				},
				toLogical: function(t, i) {
					return LF(t) ? this._9L._$d(t) : this._9L._g2(t, i);
				},
				getElementByMouseEvent: function(t) {
					var i = this._9L._3V(t);
					if (i) return i[Ed];
				},
				getElement: function(t) {
					return LF(t) ? this[Ms](t) : this[cb].getById(t);
				},
				invalidate: function() {
					this._9L._dH();
				},
				invalidateUI: function(t) {
					t.invalidate(), this[xl]();
				},
				invalidateElement: function(t) {
					this._9L._3Z(t);
				},
				getUIBounds: function(t) {
					return this._9L._2V(t);
				},
				forEachVisibleUI: function(t, i) {
					return this._9L._4T(t, i);
				},
				forEachReverseVisibleUI: function(t, i) {
					return this._9L._$x(t, i);
				},
				forEachUI: function(t, i) {
					return this._9L._fU(t, i);
				},
				forEachReverseUI: function(t, i) {
					return this._9L._4U(t, i);
				},
				forEach: function(t, i) {
					return this._mFModel[It](t, i);
				},
				getElementByName: function(i) {
					var n;
					return (
						this.forEach(function(t) {
							if (t[To] == i) return (n = t), !1;
						}),
						n
					);
				},
				focus: function(t) {
					if (t) {
						var i = u[iA] || u[Zl],
							n = u[nA] || u[jl];
						return this[Ls][eA](), void u.scrollTo(i, n);
					}
					this[Ls].focus();
				},
				callLater: function(t, i, n) {
					this._9L._eJ(t, i, n);
				},
				exportImage: function(t, i, n) {
					return (function(t, i, n, e) {
						var s = t[hf];
						(n = n || s), (i = i || 1);
						var h = ok();
						IG(h.g), (h[$t] = n.width * i), (h[Xt] = n[Xt] * i), t._9L._iK(h.g, i, n);
						var r = null;
						try {
							r = h.toDataURL(e || sA);
						} catch (t) {
							QB[et](t);
						}
						return { canvas: h, data: r, width: h.width, height: h[Xt] };
					})(this, t, i, n);
				},
				setSelection: function(t) {
					return this[cb][Nn].set(t);
				},
				select: function(t) {
					return this[cb][Nn].select(t);
				},
				unselect: function(t) {
					return this[cb]._selectionModel[hA](t);
				},
				reverseSelect: function(t) {
					return this[cb][Nn].reverseSelect(t);
				},
				selectAll: function() {
					var i, t, n;
					(t = (i = this)[Bn]),
						(n = []),
						i[eb][It](function(t) {
							i[rA](t) && i[aA](t) && n[L](t);
						}),
						t.set(n);
				},
				unSelectAll: function() {
					this[Bn][Ot]();
				},
				unselectAll: function() {
					this.unSelectAll();
				},
				isSelected: function(t) {
					return this[cb][Nn].contains(t);
				},
				sendToTop: function(t) {
					if (
						((function(t, i) {
							if (i instanceof jW)
								i[Eb]() ||
									(function(t, i) {
										var n = i.fromAgent;
										if (i[Id]()) ZW(t, n);
										else {
											var e = i[Od];
											ZW(t, n), ZW(t, e);
										}
									})(t, i);
							else for (ZW(t, i); (i = i.parent); ) ZW(t, i);
						})(this[cb], t),
						t instanceof jW)
					) {
						var i = this[Is](t);
						if (i) {
							var n = this._9L._oM;
							n[Sn](i, n.length - 1);
						}
					}
				},
				sendToBottom: function(t) {
					!(function(t, i) {
						if (i instanceof jW)
							i[Eb]() ||
								(function(t, i) {
									var n = i.fromAgent;
									if (i.isLooped()) UW(t, n);
									else {
										var e = i.toAgent;
										UW(t, n), UW(t, e);
									}
								})(t, i);
						else for (UW(t, i); (i = i.parent); ) UW(t, i);
					})(this[cb], t);
				},
				moveElements: function(t, i, n) {
					var e = [],
						s = new PF();
					return (
						RR(t, function(t) {
							t instanceof QW ? e[L](t) : t instanceof jW && s.add(t);
						}),
						this._g8(e, i, n, s)
					);
				},
				_g8: function(t, n, e, i) {
					if ((0 == n && 0 == e) || (0 == t[F] && 0 == i[F])) return !1;
					if (0 != t[F]) {
						var s = this._57(t);
						(i = this._55(s, i)),
							RR(s, function(t) {
								var i = t[Yb];
								i ? t.setLocation(i.x + n, i.y + e) : t[oA](n, e);
							});
					}
					return i && i[F] && this._gA(i, n, e), !0;
				},
				_gA: function(t, i, n) {
					t[It](function(t) {
						t[zs](i, n);
					});
				},
				_55: function(i, n) {
					return (
						this[eb][It](function(t) {
							t instanceof jW && this[fA](t) && i.contains(t.fromAgent) && i[Zt](t[Od]) && n.add(t);
						}, this),
						n
					);
				},
				_57: function(t) {
					var i = new PF();
					return (
						RR(
							t,
							function(t) {
								this[fA](t),
									i.add(t),
									(function i(t, n, e) {
										t._jZ() &&
											t[p]() &&
											t.children[It](function(t) {
												t instanceof QW && n.add(t) && i(t, n, e);
											}, this),
											t.hasFollowers() &&
												t._f7[It](function(t) {
													(null == e || e[gn](t)) && n.add(t) && i(t, n, e);
												});
									})(t, i, this[cA]);
							},
							this
						),
						i
					);
				},
				reverseExpanded: function(t) {
					if (!t[Ld]()) return !1;
					var i = t[Vd](!0);
					return !!i && (!1 !== i.reverseExpanded() ? (this.invalidate(), !0) : void 0);
				},
				_36: null,
				_19: null,
				beforeInteractionEvent: function(t) {
					return this._19[d](t);
				},
				onInteractionEvent: function(t) {
					this._19.onEvent(t);
				},
				addCustomInteraction: function(t) {
					this._36.addCustomInteraction(t);
				},
				removeCustomInteraction: function(t) {
					this._36[uA](t);
				},
				enableWheelZoom: !0,
				enableTooltip: !0,
				getTooltip: function(t) {
					return t[Ib] || t[To];
				},
				updateViewport: function() {
					this._9L._8A();
				},
				destroy: function() {
					var t;
					this._54(new eB(this, Ps, !0, this[Du])),
						(this[Du] = !0),
						this._onresize && ((t = this[_A]), u.removeEventListener(bN, t)),
						this._36[Ps](),
						(this.graphModel = new a$());
					var i = this[lA];
					this._9L._jO(), i && (i.innerHTML = "");
				},
				onPropertyChange: function(i, n, e) {
					this._$t[Vi](function(t) {
						t[Ti] == i && n[m](e, t);
					});
				},
				removeSelection: function() {
					var t = this[Bn]._l5;
					return !(!t || 0 == t.length) && ((t = t[S]()), this._mFModel[k](t), t);
				},
				removeSelectionByInteraction: function(n) {
					var t = this[Bn].datas;
					if (!t || 0 == t.length) return !1;
					QB.confirm(
						dA + t.length,
						function() {
							var t = this.removeSelection();
							if (t) {
								var i = new DX(this, DX[bA], n, t);
								this.onInteractionEvent(i);
							}
						},
						this
					);
				},
				createShapeByInteraction: function(t, i, n, e) {
					var s = new cG(i);
					2 < i[F] && s[zf]();
					var h = this[TN](vA, s, n, e);
					this.onElementCreated(h, t);
					var r = new DX(this, DX.ELEMENT_CREATED, t, h);
					return this[LN](r), h;
				},
				createLineByInteraction: function(t, i, n, e) {
					var s = new cG(i),
						h = this[TN](yA, s, n, e);
					h[pb](QB[gA].SHAPE_FILL_COLOR, null),
						h[pb](QB[gA].SHAPE_FILL_GRADIENT, null),
						h.setStyle(QB[gA].LAYOUT_BY_PATH, !0),
						this.onElementCreated(h, t);
					var r = new DX(this, DX[EA], t, h);
					return this.onInteractionEvent(r), h;
				},
				createEdgeByInteraction: function(t, i, n, e, s, h) {
					var r = this[xA](mA, t, i);
					if ((s && r.setStyle(QB[gA][_x], s), h && r.setStyle(QB[gA][dx], h), e)) r[Pb] = e;
					else {
						var a = this[pA],
							o = this[Fb];
						this.interactionProperties && ((a = this.interactionProperties[Zd] || a), (o = this[wA][Fb] || o)),
							a && (r.uiClass = a),
							o && (r[Fb] = o);
					}
					this[TA](r, n);
					var f = new DX(this, DX[EA], n, r);
					return this[LN](f), r;
				},
				onElementCreated: function(t, i, n) {
					!t.parent && this[Av] && (t.parent = this.currentSubNetwork);
				},
				allowEmptyLabel: !1,
				startLabelEdit: function(i, n, t, e) {
					var s = this;
					t[NA](e.x, e.y, n[Qi], this[Sy](i, v$[Mg]), function(t) {
						return s[AA](i, n, t, n[Fi]);
					});
				},
				onLabelEdit: function(t, i, n, e) {
					if (!n && !this[OA]) return QB[N_](IA), !1;
					if (im == i.name) {
						if (t[To] == n) return !1;
						t[To] = n;
					} else !1 === e._hL(i, n) && ((i.data = n), this[LA](t));
				},
				setInteractionMode: function(t, i) {
					(this[MA] = t), (this[wA] = i);
				},
				upSubNetwork: function() {
					return !!this._3H && (this[Av] = Z$(this._3H));
				},
				_$p: !1,
				invalidateVisibility: function() {
					(this._$p = !0), this[xl]();
				},
				getBundleLabel: function(t) {
					var i = t[Vd](!0);
					return i && i[SA] == t ? DA + i.bindableEdges[F] : null;
				},
				zoomAnimation: null,
				pauseRendering: function(t, i) {
					(this[PA] || i) && this._9L._7V(t);
				},
				_59: M,
				enableRectangleSelectionByRightButton: !0,
				getLinkablePoints: function(t, i, n) {
					return t[CA];
				},
			}),
			{
				center: {
					get: function() {
						return this[Kl](this[lA][ne] / 2, this[lA][hd] / 2);
					},
				},
				visibleFilter: {
					get: function() {
						return this[Nd];
					},
					set: function(t) {
						(this[Nd] = t), this[Tb]();
					},
				},
				topCanvas: {
					get: function() {
						return this._9L[vd];
					},
				},
				propertyChangeDispatcher: {
					get: function() {
						return this._$t;
					},
				},
				listChangeDispatcher: {
					get: function() {
						return this._1E;
					},
				},
				dataPropertyChangeDispatcher: {
					get: function() {
						return this._8;
					},
				},
				selectionChangeDispatcher: {
					get: function() {
						return this._$n;
					},
				},
				parentChangeDispatcher: {
					get: function() {
						return this._12;
					},
				},
				childIndexChangeDispatcher: {
					get: function() {
						return this._$k;
					},
				},
				interactionDispatcher: {
					get: function() {
						return this._19;
					},
				},
				cursor: {
					set: function(t) {
						this[Ls][Jn][RA] = t || this._36[FA];
					},
					get: function() {
						return this[Ls][Jn][RA];
					},
				},
				interactionMode: {
					get: function() {
						return this._36[BA];
					},
					set: function(t) {
						var i = this[MA];
						i != t && ((this._36.currentMode = t), this._54(new eB(this, MA, t, i)));
					},
				},
				scaleStep: {
					get: function() {
						return this._9L._fX;
					},
					set: function(t) {
						this._9L._fX = t;
					},
				},
				maxScale: {
					get: function() {
						return this._9L._i4;
					},
					set: function(t) {
						this._9L._i4 = t;
					},
				},
				minScale: {
					get: function() {
						return this._9L._i6;
					},
					set: function(t) {
						this._9L._i6 = t;
					},
				},
				scale: {
					get: function() {
						return this._9L[Ze];
					},
					set: function(t) {
						return (this._9L[Ze] = t);
					},
				},
				tx: {
					get: function() {
						return this._9L._tx;
					},
				},
				ty: {
					get: function() {
						return this._9L._ty;
					},
				},
				styles: {
					get: function() {
						return this._l3;
					},
					set: function(t) {
						this._l3 = t;
					},
				},
				selectionModel: {
					get: function() {
						return this._mFModel._selectionModel;
					},
				},
				graphModel: {
					get: function() {
						return this._mFModel;
					},
					set: function(t) {
						if (this._mFModel == t) return !1;
						var i = this._mFModel,
							n = new eB(this, eb, i, t);
						if (!1 === this._1S(n)) return !1;
						null != i &&
							(i[kA][wo](this._$t, this),
							i[wn][wo](this._1E, this),
							i[An][wo](this._8, this),
							i[Ln][wo](this._12, this),
							i.childIndexChangeDispatcher[wo](this._$k, this),
							i.selectionChangeDispatcher[wo](this._$n, this)),
							(this[cb] = t),
							this[cb] &&
								(this[cb].propertyChangeDispatcher[Vi](this._$t, this),
								this[cb].listChangeDispatcher[Vi](this._1E, this),
								this._mFModel[An][Vi](this._8, this),
								this[cb][Ln][Vi](this._12, this),
								this[cb][GA].addListener(this._$k, this),
								this[cb][Tn].addListener(this._$n, this)),
							this._9L && this._9L._mZ(),
							this._54(n);
					},
				},
				count: {
					get: function() {
						return this._mFModel[F];
					},
				},
				width: {
					get: function() {
						return this[lA].clientWidth;
					},
				},
				height: {
					get: function() {
						return this[lA][hd];
					},
				},
				viewportBounds: {
					get: function() {
						return this._9L._viewportBounds;
					},
				},
				bounds: {
					get: function() {
						return this._9L._4V();
					},
				},
				canvasPanel: {
					get: function() {
						return this._9L[$l];
					},
				},
				html: {
					get: function() {
						return this._9L[$l].parentNode;
					},
				},
				navigationType: {
					get: function() {
						return this._9L._86;
					},
					set: function(t) {
						this._9L._42(t);
					},
				},
				_3H: {
					get: function() {
						return this[cb]._3H;
					},
				},
				currentSubNetwork: {
					get: function() {
						return this._mFModel[Av];
					},
					set: function(t) {
						this[cb][Av] = t;
					},
				},
				limitedBounds: {
					get: function() {
						return this[WA];
					},
					set: function(t) {
						if (JF.equals(t, this[WA])) return !1;
						this[WA] = t ? new JF(t) : null;
					},
				},
				ratio: {
					get: function() {
						return this._9L[Ur];
					},
				},
				delayedRendering: {
					get: function() {
						return this._59 === M ? DF.DELAYED_RENDERING : this._59;
					},
					set: function(t) {
						t != this.delayedRendering && ((this._59 = t), this[$A](!1, !0));
					},
				},
				fullRefresh: {
					get: function() {
						return this._9L[XA];
					},
					set: function(t) {
						this._9L[XA] = t;
					},
				},
				enableCrossLine: {
					get: function() {
						return null != this._9L._e8;
					},
					set: function(t) {
						t != this[HA] && (this._9L[HA](t), this[xl]());
					},
				},
			}
		),
		(DF[YA] = !0),
		(DF.GROUP_MIN_WIDTH = 60),
		(DF[JA] = 60),
		(U$[N] = {
			_dE: function() {
				if (!this._5W()) return YR(this, U$, Dm, arguments);
			},
			initialize: function() {
				YR(this, U$, dy), this[Ym]();
			},
			_oZ0: function() {
				(this._nE = new cG()),
					(this[Zm] = new I$(this._nE)),
					(this[Zm].layoutByPath = !1),
					this.addChild(this[Zm], 0),
					(this[Za] = this[Zm]);
			},
			checkBody: function() {
				if (this._5W())
					return (
						(this._25 = !0),
						this.shape ? ((this.shape[Wl] = !0), (this[Za] = this.shape)) : (this[ZA](), m$[lT](this)),
						void (this[mo] && (this.image.visible = !1))
					);
				this[mo] ? ((this[mo][Wl] = !0), (this[Za] = this[mo])) : this[tN](), this[Zm] && (this[Zm][Wl] = !1);
			},
			_5W: function() {
				return this.$data._jZ() && this[Ed][Ud];
			},
			_nE: null,
			_25: !0,
			_5X: function() {
				(this._1H = !0), (this._25 = !0);
			},
			doValidate: function() {
				if (this._25 && this._5W()) {
					if (((this._25 = !1), this[Zm][zd](), this.$data.groupImage)) {
						this[Zm][Qi] = this.$data[Wv];
						var t = this._26();
						return (
							(this[Zm][xm] = t.x + t[$t] / 2),
							(this[Zm][iy] = t.y + t[Xt] / 2),
							(this[Zm][ml] = { width: t[$t], height: t.height }),
							D$.prototype[by][m](this)
						);
					}
					(this[Zm][xm] = 0), (this[Zm][iy] = 0);
					var i = this._93(this[Ed][kv]);
					if ((this._nE[Ot](), i instanceof JF)) {
						var n = this.getStyle(v$.GROUP_RADIUS) || 0;
						n$(this._nE, i.x, i.y, i[$t], i.height, i.rx || n, i.ry || n);
					} else
						i instanceof pk
							? ((e = this._nE),
							  (s = i.r || 1),
							  (h = i.cx || 0),
							  (r = i.cy || 0),
							  (a = s * Math.tan(Math.PI / 8)),
							  (o = s * Math.sin(Math.PI / 4)),
							  e[_a](h + s, r),
							  e[ov](h + s, r + a, h + o, r + o),
							  e.quadTo(h + a, r + s, h, r + s),
							  e[ov](h - a, r + s, h - o, r + o),
							  e[ov](h - s, r + a, h - s, r),
							  e[ov](h - s, r - a, h - o, r - o),
							  e[ov](h - a, r - s, h, r - s),
							  e.quadTo(h + a, r - s, h + o, r - o),
							  e[ov](h + s, r - a, h + s, r))
							: i instanceof wk && e$(this._nE, i);
					(this._nE._6W = !0), this[Zm][zd]();
				}
				var e, s, h, r, a, o;
				return D$.prototype.doValidate.call(this);
			},
			_79: function(t, i, n, e, s) {
				switch ((G != typeof e && (e = -i / 2), G != typeof s && (s = -n / 2), t)) {
					case qB.GROUP_TYPE_CIRCLE:
						return new pk(e + i / 2, s + n / 2, Math.max(i, n) / 2);
					case qB[UA]:
						return new wk(e + i / 2, s + n / 2, i, n);
					default:
						return new JF(e, s, i, n);
				}
			},
			_26: function() {
				return this._93(null);
			},
			_93: function(t) {
				var i = this.data,
					n = i.padding,
					e = i.minSize,
					s = DF[jA],
					h = DF.GROUP_MIN_HEIGHT;
				if ((e && (G == typeof e[$t] && (s = e.width), G == typeof e[Xt] && (h = e[Xt]), (E = e.x), (x = e.y)), !i[p]()))
					return this._79(t, s, h, E, x);
				var r,
					a = this.$data._hJ._l5;
				(t != qB[zA] && t != qB.GROUP_TYPE_ELLIPSE) || (r = []);
				for (var o, f, c, u, _ = new JF(), l = 0, d = a[F]; l < d; l++) {
					var b = a[l];
					if (this[My].isVisible(b) && !(b instanceof jW)) {
						var v = this[My].getUI(b);
						v &&
							((o = v.$x + v._hN.x),
							(f = v.$y + v._hN.y),
							(c = v._hN[$t]),
							(u = v._hN[Xt]),
							_.addRect(o, f, c, u),
							r && (r[L]({ x: o, y: f }), r[L]({ x: o + c, y: f }), r[L]({ x: o + c, y: f + u }), r[L]({ x: o, y: f + u })));
					}
				}
				if (_.isEmpty()) return this._79(t, s, h, E, x);
				var y = this.$data.$location;
				y
					? y[Mv] && ((y[Mv] = !1), E === M && (y.x = _.cx), x === M && (y.y = _.cy))
					: (y = this[Ed].$location = { x: _.cx, y: _.cy }),
					n && _[eu](n),
					G == typeof E && E + y.x < _.x && ((_[$t] += _.x - (E + y.x)), (_.x = E + y.x), r && r.push({ x: _.x, y: _.cy })),
					G == typeof x && x + y.y < _.y && ((_.height += _.y - (_.y, x + y.y)), (_.y = x + y.y), r && r[L]({ x: _.cx, y: _.y }));
				var g,
					E = y.x,
					x = y.y;
				if (t != qB.GROUP_TYPE_CIRCLE)
					return (
						t == qB.GROUP_TYPE_ELLIPSE
							? (((g = (function(t, i) {
									for (
										var n,
											e =
												(i =
													i ||
													(function(t) {
														for (var i, n = t.length, e = new JF(), s = 0; s < n; s++)
															(i = t[s]), e.add(i.x, i.y);
														return e;
													})(t))[$t] / i[Xt],
											s = [],
											h = t[F],
											r = 0;
										r < h;
										r++
									)
										(n = t[r]), s[L]({ x: n.x, y: n.y * e });
									var a = Tk(s);
									if (a) return new wk(a.cx, a.cy / e, 2 * a.r, (2 * a.r) / e);
							  })(r, _)).cx -= E),
							  (g.cy -= x),
							  g[$t] < s && ((g.cx += (s - g[$t]) / 2), (g[$t] = s)),
							  g.height < h && ((g.cy += (h - g.height) / 2), (g.height = h)))
							: ((g = _).width < s && (_[$t] = s), _[Xt] < h && (_[Xt] = h), _.offset(-E, -x)),
						g
					);
				((g = Tk(r)).cx -= E), (g.cy -= x);
				var m = Math.max(s, h) / 2;
				return g.r < m && ((g.cx += m - g.r), (g.cy += m - g.r), (g.r = m)), g;
			},
			_$v: function(t, i, n) {
				if (!this._5W()) return YR(this, U$, VA, arguments);
				var e = this._dD[Yp](this, t, i, n);
				return (e = y$[Yp](this, t, i, n) || e), (e = x$.onBindingPropertyChange(this, t, i, n) || e), m$[Yp](this, t, i, n) || e;
			},
		}),
		XR(U$, D$),
		(QB[KA] = U$),
		(DF[QA] = null),
		(DF[qA] = null);
	var j$ = { position: cl, "text-align": $e },
		z$ = { padding: tO, transition: iO },
		V$ = { position: dl, display: nO };
	function K$(t, i, n, e, s, h, r) {
		var a = x.createElement(Yn);
		(a.className = eO), xB(a, j$), i && xB(a, i);
		var o = x[Hn](Ha);
		return (
			h && (uF && (o[O] = h), IB || (o[ds] = h)),
			(o.name = r),
			(o.src = n),
			xB(o, z$),
			s && xB(o, s),
			e && mB(o, kl, sO),
			(a._img = o),
			a[ce](o),
			t[ce](a),
			a
		);
	}
	function Q$(h, t) {
		if (!DF[QA]) {
			var i = ok(20, 40),
				n = i.g;
			n[Na](n.ratio, n[Ur]),
				n.moveTo(16, 4),
				n.lineTo(4, 20),
				n.lineTo(16, 36),
				(n[Ea] = 3),
				(n[Ef] = tr),
				(n[xf] = tr),
				(n[Oa] = Ma),
				(n.shadowColor = hO),
				(n[co] = 5),
				n[La](),
				(DF[QA] = i.toDataURL());
			var e = ok(i.height, i[$t], !1);
			e.g.translate(e[$t], 0), e.g[Mt](Math.PI / 2), e.g[vo](i, 0, 0), (DF[qA] = e[rO]());
		}
		(this[H_] = h),
			function(t, i) {
				(this[aO] = x[Hn](Yn)),
					(this[aO].className = oO),
					xB(this._navPane, { "background-color": fO, overflow: Ja, "user-select": qh, position: dl }),
					(this[cO] = K$(this[aO], { width: ll }, DF[qA], !1, null, i, uO)),
					(this[_O] = K$(this[aO], { height: ll }, DF[QA], !1, V$, i, Kt)),
					(this[lO] = K$(this._navPane, { height: ll, right: V_ }, DF[QA], !0, V$, i, kt)),
					(this[dO] = K$(this[aO], { width: ll, bottom: V_ }, DF.NAVIGATION_IMAGE_TOP, !0, null, i, Bt)),
					t[ce](this[aO]);
			}[m](this, t, function(t) {
				var i, n;
				mF(t);
				var e = t[J_],
					s = e[To];
				if (Kt == s) i = 1;
				else if (kt == s) i = -1;
				else if (uO == s) n = 1;
				else {
					if (Bt != s) return;
					n = -1;
				}
				uF &&
					((e[I] = bO),
					setTimeout(function() {
						e[I] = "";
					}, 100)),
					mF(t),
					h._mF[vO](i, n);
			}),
			this._3J(t[ne], t.clientHeight);
	}
	function q$(t, i) {
		(this._oXaseCanvas = t), this.init(i, t);
	}
	function tX(t, i) {
		HR(this, tX, arguments);
	}
	function iX(t, i) {
		var n, e;
		(this[H_] = t),
			(this._kX =
				((n = i),
				IG((e = ok(!0)).g),
				(e[OO] = function() {
					return !1;
				}),
				n[ce](e),
				(e.className = yW),
				e)),
			(this.g = this._kX.g),
			(this[IO] = new PF());
	}
	pB(yO, "opacity:0.7;vertical-align:middle;"),
		pB(".Q-Graph-Nav img:hover,img.hover", gO),
		uF || (pB(EO, xO + EB(mO) + pO), pB(wO, TO + EB(mO) + NO)),
		(Q$.prototype = {
			_dF: function(t, i) {
				if (t._k1 == i) return !1;
				(t._k1 = i), (t[Jn][Ya] = i ? "visible" : Ja);
			},
			_3J: function(t, i) {
				var n = i / 2 - this[_O][AO][hd] / 2 + jr;
				(this[_O][AO].style.top = n),
					(this._right[AO][Jn].top = n),
					(this[aO][Jn].width = t + jr),
					(this[aO].style.height = i + jr);
			},
			_oWB: function(t, i, n, e) {
				this._dF(this[cO], t), this._dF(this._left, i), this._dF(this[dO], n), this._dF(this[lO], e);
			},
			_jO: function() {
				var t = this[aO][z_];
				t && t[Cn](this[aO]);
			},
			_lE: function() {
				var t = this._oXaseCanvas._mF;
				if (t) {
					var i = t[hf];
					if (i[mn]()) this._oWB(!1, !1, !1, !1);
					else {
						var n = t[fb],
							e = n.y > i.y + 1,
							s = n.x > i.x + 1,
							h = n[Bt] < i[Bt] - 1,
							r = n[kt] < i[kt] - 1;
						this._oWB(e, s, h, r);
					}
				}
			},
		}),
		pB(LO, MO),
		pB(SO, "background-color: #7E7E7E;" + EB(mO) + ": background-color 0.2s linear;"),
		pB(".Q-Graph-ScrollBar--V", "width: 8px;right: 0px;"),
		pB(".Q-Graph-ScrollBar--H", "height: 8px;bottom: 0px;"),
		pB(".Q-Graph-ScrollBar--V.Both", DO),
		pB(".Q-Graph-ScrollBar--H.Both", PO),
		uF || (pB(CO, xO + EB(mO) + RO), pB(".Q-Graph:hover .Q-Graph-ScrollPane", TO + EB(mO) + ":opacity 0.3s linear;")),
		(q$.prototype = {
			_jO: function() {
				this[FO]._jO(),
					this._horizontalDragSupport._jO(),
					delete this[FO],
					delete this[BO],
					this._nF[z_] && this._nF.parentNode.removeChild(this._nF);
			},
			_nF: null,
			_oZ2: null,
			_95: null,
			init: function(t, i) {
				var n = x[Hn](Yn);
				(n.className = kO), xB(n, { width: ll, height: ll, position: dl });
				var e = x[Hn](Yn);
				e[I] = "Q-Graph-ScrollBar Q-Graph-ScrollBar--V";
				var s = x[Hn](Yn);
				(s.className = "Q-Graph-ScrollBar Q-Graph-ScrollBar--H"),
					n[ce](e),
					n[ce](s),
					t[ce](n),
					(this._nF = n),
					(this._95 = s),
					(this._oZ2 = e),
					(s.isH = !0);
				var r = this,
					h = {
						onstart: function(t, i) {
							i.classList.add(bO);
						},
						onrelease: function(t, i) {
							i[D][k](bO);
						},
						ondrag: function(t, i) {
							var n = r._oXaseCanvas._mF;
							if (n) {
								var e = i.isH,
									s = e ? t.dx : t.dy;
								if (s && i[Na]) {
									var h = n.scale / i[Na];
									e ? n.translate(-h * s, 0) : n[Ta](0, -h * s), QB[EN](t);
								}
							}
						},
						enddrag: function(t, i) {
							var n = r._oXaseCanvas._mF;
							if (n && n.enableInertia) {
								var e = i.isH,
									s = e ? t.vx : t.vy;
								0.1 < Math.abs(s) && ((s *= n.scale / i[Na]), e ? n[vO](-s, 0) : n[vO](0, -s));
							}
						},
					};
				(this[FO] = new FB(e, h)), (this[BO] = new FB(s, h));
			},
			_3J: function() {
				var t = this[H_]._mF;
				t && t[HN](this._lE[Ie](this));
			},
			_lE: function() {
				var t = this[H_]._mF;
				if (t) {
					var i = t[hf];
					if (i[mn]()) return this._4G(!1), void this._4H(!1);
					var n = t.viewportBounds,
						e = t[$t],
						s = t[Xt],
						h = 1 / t[Na],
						r = n.x > i.x + h || n[kt] < i[kt] - h,
						a = n.y > i.y + h || n[Bt] < i[Bt] - h,
						o = r && a;
					o ? (dF(this[GO], WO), dF(this._95, WO)) : (bF(this[GO], WO), bF(this._95, WO)),
						this._4G(r, n, i, o ? e - 10 : e),
						this._4H(a, n, i, o ? s - 10 : s);
				}
			},
			_4G: function(t, i, n, e, s) {
				if (!t) return (this._95[Jn].display = qh), void (this._95[Na] = 0);
				var h = Math.min(i.x, n.x),
					r = Math.max(i.right, n[kt]),
					a = e / (r - h);
				(this._95[Na] = a),
					(this._95.style[Kt] = parseInt((i.x - h) * a) + jr),
					(this._95[Jn][kt] = parseInt((r - i.right) * a) + jr),
					(this._95[Jn].display = "");
			},
			_4H: function(t, i, n, e) {
				if (!t) return (this[GO][Jn][$O] = qh), void (this[GO][Na] = 0);
				var s = Math.min(i.y, n.y),
					h = Math.max(i[Bt], n[Bt]),
					r = e / (h - s);
				(this[GO][Na] = r),
					(this[GO][Jn].top = parseInt((i.y - s) * r) + jr),
					(this[GO][Jn][Bt] = parseInt((h - i[Bt]) * r) + jr),
					(this[GO].style.display = "");
			},
		}),
		(tX.prototype = {
			shape: null,
			initialize: function() {
				YR(this, tX, dy), this._oXZ(), T$[lT](this);
			},
			_oXZ: function() {
				(this[mo] = new M$(this.$data[gd])), this[jp](this.image, 0), (this[Za] = this.image);
			},
			invalidateShape: function() {
				this.image[zd](), this[Yd]();
			},
			_$v: function(t, i, n) {
				var e = this._dD.onBindingPropertyChange(this, t, i, n);
				return (e = y$[Yp](this, t, i, n) || e), T$[Yp](this, t, i, n) || e;
			},
			doValidate: function() {
				this[Za] && ((this.image[Qi] = this[Qi].path), (this[Za][qc] = null != this._2O), (this[Za][ev] = this._2O));
				var t = this[Ed][Yb],
					i = 0,
					n = 0;
				t && ((i = t.x), (n = t.y));
				var e = this.$x != i || this.$y != n;
				return e && (this.$invalidateBounds = !0), (this.$x = i), (this.$y = n), A$[N].doValidate[m](this) || e;
			},
			getLinkablePorts: function() {
				return this.data[XO];
			},
			getLinkableBounds: function() {
				return this[iN];
			},
			getDefaultPortPoint: function(t) {
				return qF(UF[li], t || this[gT]());
			},
			getPortPoint: function(t, i) {
				return t
					? ((i = i || this[gT]())[fw]
							? ((n = qF(t, i[fw])),
							  i.rotate && (n = ik(n.x, n.y, i[Mt], i[HO] || 0, i[YO] || 0)),
							  (n.x += i.tx || 0),
							  (n.y += i.ty || 0))
							: (n = qF(t, i)),
					  (n[nN] = t),
					  n)
					: this[JO](i);
				var n;
			},
			getPortPoints: function() {
				var t = this.getLinkablePorts();
				if (t && Array[W](t)) {
					var i = [],
						n = this.getLinkableBounds();
					return (
						t[It](
							function(t) {
								i.push(this[vT](t, n));
							}.bind(this)
						),
						i
					);
				}
			},
		}),
		XR(tX, A$),
		OF(tX[N], {
			path: {
				get: function() {
					return this[Qi][gd];
				},
			},
			length: {
				get: function() {
					return this[Qi][F];
				},
			},
		}),
		(tX[N].addPoint = function(t, i, n) {
			var e = this._k2(t, i),
				s = this[Qi],
				h = _G(this[gd], e.x, e.y, this[Qi][QT], n);
			if (!h) return !1;
			s[xT] = h[ET];
		}),
		(iX[N] = {
			_nH: function() {
				this._kX[Jn][Ya] = Wl;
			},
			_lF: function() {
				this._kX[Jn][Ya] = Ja;
			},
			clear: function() {
				this[IO][Ot](), this._dH();
			},
			contains: function(t) {
				return t instanceof Object && t.id && (t = t.id), this[IO][Nt](t);
			},
			_5Z: function(t) {
				FW.setStyle(this._kX, kl, t ? Gl + t[j_](V) + ")" : "");
			},
			addDrawable: function(t, i) {
				if (i) {
					var n = { id: ++VR, drawable: t, scope: i };
					return this._oWD.add(n), n;
				}
				return t.id || (t.id = ++VR), this._oWD.add(t), t;
			},
			removeDrawable: function(t) {
				if (!t.id) return this._oWD.removeById(t);
				this[IO][k](t);
			},
			_oWD: null,
			invalidate: function() {
				this._dH();
			},
			_dH: function() {
				this[H_]._6W || this._lD();
			},
			_k3: function(t, i) {
				this._kX[Cl](t, i);
			},
			_lD: function() {
				var t = this[H_]._scale,
					i = this.g;
				i._mW(), i[Vf](), this._oXaseCanvas[ZO](i);
				for (var n = this._oWD._l5, e = 0, s = n[F]; e < s; e++) i[Vf](), i.beginPath(), this._hP(i, n[e], t), i[Sa]();
				i[Sa]();
			},
			_hP: function(t, i, n) {
				i instanceof Function ? i(t, n) : i.drawable instanceof Function && i.scope && i.drawable[m](i[Ji], t, n);
			},
		}),
		(DF[UO] = !0);
	var nX = function(t) {
		this._mF = t;
	};
	function eX(t) {
		(this.graph = t), (this[jO] = t[jO]);
	}
	(DF.ANIMATION_MAXTIME = 600),
		(DF.ANIMATION_TYPE = jB[zO]),
		(nX[N] = {
			_mF: null,
			_gC: null,
			_iU: function(t, i, n) {
				this._nN();
				var e = Math.abs(t / 2),
					s = Math.abs(i / 2),
					h = Math.min(DF[VO], 0.6 * Math.max(e, s) * 1e3);
				if (h < 10) return !1;
				var r = (t * h) / 3,
					a = (i * h) / 3;
				this._n1(
					this._mF.tx + r,
					this._mF.ty + a,
					0,
					{
						duration: h,
						animationType: function(t) {
							return -(2 * Math.pow(t, 1.5) - 3 * t);
						},
					},
					n
				);
			},
			_8E: function(t, i, n, e, s) {
				this._gC && this._gC._nN(),
					s && ((this[KO] = !0), this._mF[$A](!0)),
					this._5B(),
					(this._gC = new zB(t, this, i, n)),
					(this._gC._7O = this._7O[Ie](this)),
					this._gC._mI(e);
			},
			_5B: function() {
				this._mF.onAnimationStart();
			},
			_7O: function() {
				this.__delayRender && (this._mF[$A](!1), delete this.__delayRender), this._mF[QO]();
			},
			_fL: function() {
				return this._gC && this._gC._fL();
			},
			_nN: function() {
				this._gC && this._gC._nN();
			},
			_kM: function(t, i, n, e) {
				var s = this._fromTX + (this[qO] - this[tI]) * t,
					h = this._fromTY + (this._toTY - this._fromTY) * t,
					r = this[iI] + (this[nI] - this[iI]) * t;
				this._mF[ed](s, h, r, this[eI]);
			},
			_n1: function(t, i, n, e, s) {
				this._nN();
				var h = this._mF,
					r = h[Na];
				if ((n <= 0 && (n = r), t != h.tx || i != h.ty || n != r)) {
					var a, o, f;
					e instanceof Object && ((a = e[sI]), (o = e[hI]), (f = e[rI]));
					var c = h.tx,
						u = h.ty;
					if (!a)
						if (n != r) {
							var _ = r < n ? n / r : r / n;
							a = 60 * (_ = Math.log(_) / Math.log(1.3));
						} else a = CF(t, i, c, u) / 2;
					(o = o || DF[VO]),
						(f = f || DF[aI]),
						(a = Math.min(o, a)),
						(this._fromTX = c),
						(this[oI] = u),
						(this[iI] = r),
						(this[qO] = t),
						(this[fI] = i),
						(this[nI] = n),
						this._8E(this._kM, a, f, s, n != r);
				}
			},
		}),
		(DF[cI] = 8),
		(DF[uI] = 4),
		(DF.INTERACTION_ROTATE_HANDLER_SIZE_TOUCH = 30),
		(DF.INTERACTION_ROTATE_HANDLER_SIZE_DESKTOP = 20);
	var sX = Math.PI;
	function hX(t, i) {
		(this[_I] = t), (this[FA] = i || lI);
	}
	function rX(t) {
		HR(this, rX, arguments);
	}
	function aX(t) {
		HR(this, aX, arguments);
	}
	function oX(t) {
		(this.rect = t[No]()), (this[Fs] = t[dI]()), (this[bI] = t.getDefaultPortPoint());
	}
	function fX(t) {
		HR(this, fX, arguments);
	}
	function cX(t) {
		HR(this, cX, arguments);
	}
	function uX(t) {
		HR(this, uX, arguments);
	}
	function _X(t, i, n) {
		var e = t.offsetWidth,
			s = t[vI];
		(t[Jn].left = i - e / 2 + jr), (t.style.top = n - s / 2 + jr);
	}
	function lX() {}
	function dX(t) {
		this.graph = t;
	}
	function bX(t) {
		this[My] = t;
	}
	function vX(t) {
		this.graph = t;
	}
	function yX(t) {
		this[My] = t;
	}
	function gX(t) {
		this.graph = t;
	}
	function EX(t) {
		HR(this, EX, arguments), (this.handlerSize = uF ? 8 : 5);
	}
	function xX(t) {
		return t[wi] == hG || t[wi] == rG;
	}
	function mX(t) {
		(this[My] = t), (this.topCanvas = t[jO]);
	}
	(eX[N] = {
		element: null,
		_$l: !1,
		setCurrentElement: function(t, i) {
			(this[yI] = t), i && this[gI]();
		},
		onDataPropertyChange: function(t) {},
		addDataPropertyChangeListener: function() {
			this._$l || ((this._$l = !0), this[My][EI][Vi](this._1J, this));
		},
		removeDataPropertyChangeListener: function() {
			this._$l && ((this._$l = !1), this.graph.dataPropertyChangeDispatcher[wo](this._1J, this));
		},
		_1J: function(t) {
			this[yI] && t.source == this[yI] && this[xI](t);
		},
		onElementRemoved: function(t, i) {
			var n, e;
			this[yI] &&
				(t == this[yI] ||
					(gF(t) &&
						((n = this.element),
						(e = !1),
						RR(t, function(t) {
							if (n == t) return !(e = !0);
						}),
						e))) &&
				this[Ps](i);
		},
		onClear: function(t) {
			this[yI] && this.destroy(t);
		},
		destroy: function(t) {
			delete this[yI], this[mI](), this[pI](), (this.drawableList = null);
		},
		invalidate: function() {
			this[jO][xl]();
		},
		removeDrawable: function() {
			this[wI] && (this[jO].removeDrawable(this[wI]), delete this[wI], this[xl]());
		},
		drawableList: null,
		addDrawable: function() {
			this._nPableId || ((this[wI] = this.topCanvas.addDrawable(this.draw, this).id), this.invalidate());
		},
		isShowing: function() {
			return this[wI];
		},
		draw: function(i, n) {
			this[TI] &&
				this[TI][It](function(t) {
					t.draw(i, n);
				}),
				this[NI](i, n);
		},
		doDraw: function(t, i) {},
		escapable: !0,
		onkeydown: function(t, i) {
			this[AI] && 27 == t.keyCode && (mF(t), this[Ps](i));
		},
	}),
		(QB[OI] = eX),
		(hX.prototype = {
			defaultCursor: lI,
			getInteractionInstances: function(t) {
				if (!this[_I]) return null;
				for (var i = [], n = 0, e = this[_I][F]; n < e; n++) {
					var s = this.interactions[n];
					s instanceof Function && (s = new s(t)), s[II] instanceof Function && s[II](t), i[L](s);
				}
				return i;
			},
		}),
		(rX[N] = {
			_fC: null,
			_lG: null,
			destroy: function(t) {
				YR(this, rX, Ps, arguments), delete this._lG, delete this[He], delete this._fC;
			},
			doDraw: function(i, t) {
				var n = this[Fs];
				n &&
					(i.beginPath(),
					n[It](function(t) {
						this[LI](i, t);
					}, this),
					this[MI] && i[zf](),
					this.styleDraw(i));
			},
			styleDraw: function(t) {
				var i = (function(t, i) {
					if (!t) return i;
					var n = {};
					for (var e in t) n[e] = t[e];
					for (var e in i) n[e] === M && (n[e] = i[e]);
					return n;
				})(this[My][wA], this[SI](this[My]));
				i.lineWidth &&
					((t[Ea] = i.lineWidth),
					i[Ef] && (t[Ef] = i[Ef]),
					i[xf] && (t.lineJoin = i[xf]),
					i.lineDash && ((t[Of] = i.lineDash), (t[Mf] = i[Mf] || 0)),
					(t[Oa] = i[Oa]),
					t[La]()),
					i[pa] && ((t[pa] = i[pa]), t[Tf]());
			},
			drawPoint: function(t, i, n) {
				if (n) t[_a](i.x, i.y);
				else if (QB.isArray(i)) {
					var e = i[0],
						s = i[1];
					t[Wc](e.x, e.y, s.x, s.y);
				} else t[la](i.x, i.y);
			},
			setCurrentPoint: function(t) {
				this[DI] = t;
			},
			addPoint: function(t) {
				this._lG || ((this._lG = []), this.addDrawable()), this._lG[L](t), this[xl]();
			},
		}),
		XR(rX, eX),
		OF(rX.prototype, {
			currentPoint: {
				get: function() {
					return this[He];
				},
				set: function(t) {
					(this[He] = t), this.invalidate();
				},
			},
			prevPoint: {
				get: function() {
					return this._lG && this._lG[F] ? this._lG[this._lG.length - 1] : null;
				},
			},
			points: {
				get: function() {
					if (this[He] && this._lG && this._lG[F]) return this._lG[B](this._oWH);
				},
			},
		}),
		(QB[PI] = rX),
		(aX[N] = {
			_k4: function(t, i) {
				return this.start && t != this[CI] ? this._fE(t, i) : this[RI](t, i);
			},
			_oZ3: function(t, i) {
				return t instanceof QW && i[BN](t);
			},
			_fE: function(t, i) {
				return t instanceof QW && i[FI](t, this.start);
			},
			_oWF: function(t, i, n, e) {
				if (this[BI]) return this[BI][kI](n, e);
				var s = i[Is](t);
				return s && s.bodyBounds ? s.bodyBounds[$e] : t[R_];
			},
			_dJ: function(t, i) {
				this._mE && (clearTimeout(this._mE), delete this._mE),
					(this._mE = setTimeout(
						function(t) {
							if ((delete this._mE, this[CI] && this.currentPoint)) {
								var i = t.x - this[DI].x,
									n = t.y - this.currentPoint.y;
								Math[St](i * i + n * n) * this[My][Na] <= 2 && this[Or](this.currentPoint);
							}
						}[Ie](this, this[GI](t)),
						DF[le]
					));
			},
			destroy: function(t) {
				YR(this, aX, Ps, arguments),
					(this[CI] = null),
					(this[WI] = null),
					this._mE && (clearTimeout(this._mE), delete this._mE),
					(this._oZ4 = null),
					(this[BI] = null);
			},
			ondblclick: function(t, i) {
				this.destroy(i);
			},
			finish: function(t, i, n, e) {
				var s;
				this._lG &&
					2 <= this._lG[F] &&
					(this._lG[$u](),
					(s = new PF()),
					RR(
						this._lG,
						function(t) {
							if (QB[W](t)) {
								var i = t[0],
									n = t[1];
								s.add(new fG(qB[$I], [i.x, i.y, n.x, n.y]));
							} else s.add(new fG(qB.SEGMENT_LINE_TO, [t.x, t.y]));
						},
						this
					)),
					i[XI](this.start, n, t, s, this[WI], e),
					this[Ps](i);
			},
			onstart: function(t, i) {
				if (this[CI]) {
					var n = t.getData(),
						e = i.toLogical(t);
					this._fE(n, i) ? this[HI](t, i, n, new oX(i[Is](n)).nearestPoint(e.x, e.y)[nN]) : this[Or](e);
				}
			},
			startdrag: function(t, i) {
				if (!this[CI] && !t[YI]) {
					var n = t[Os]();
					if (n && this[RI](n, i)) {
						(t[YI] = !0), (this[CI] = n);
						var e = i[Kl](t),
							s = this[JI](n, i, e.x, e.y);
						(this[WI] = s.port), this.addPoint(s);
					}
				}
			},
			ondrag: function(t, i) {
				this[ZI](t, i);
			},
			enddrag: function(t, i) {
				if (this[CI]) {
					var n = this[UI] || t[Os]();
					if (this._fE(n, i)) {
						var e = i[Kl](t);
						this.finish(t, i, n, new oX(i[Is](n))[kI](e.x, e.y).port);
					}
				}
			},
			onrelease: function(t, i) {
				MB(t) && this[Ps](i);
			},
			_oZ4: null,
			onmousemove: function(t, i) {
				var n,
					e,
					s,
					h,
					r,
					a,
					o = i[Kl](t),
					f =
						((n = i),
						(e = o.x),
						(s = o.y),
						(h = function(t) {
							return this._k4(t, i);
						}.bind(this)),
						n.forEachReverseVisibleUI(function(t) {
							var i = t.data;
							if (
								i instanceof QB[pN] &&
								(!h || !1 !== h(i)) &&
								t.uiBounds[zt](e - t.x, s - t.y) &&
								t[xo](e, s, DF[jI] / n.scale)
							)
								return (r = i), !1;
						}),
						r);
				f != this[UI] &&
					((this[UI] = f),
					(this._oZurrentPort = f ? new oX(i[Is](f)) : null),
					f ? (this[zI](), (this[TI] = [this[BI]])) : (this[TI] = null),
					this[xl]()),
					this._oZurrentPort && ((a = this._oZurrentPort.nearestPoint(o.x, o.y)), this.invalidate()),
					this.start && ((this.currentPoint = a || o), MB(t) && this._dJ(t, i));
			},
			toLogicalPoint: function(t) {
				return this[My][Kl](t);
			},
			getDefaultDrawStyles: function(t) {
				return {
					lineWidth: this.graph[GN](v$.EDGE_WIDTH),
					strokeStyle: this[My][GN](v$[CE]),
					lineDash: this[My].getDefaultStyle(v$[VI]),
					lineDashOffset: this[My][GN](v$[$E]),
					lineCap: this[My][GN](v$[$m]),
					lineJoin: this[My][GN](v$[KI]),
				};
			},
		}),
		XR(aX, rX),
		(QB.CreateEdgeInteraction = aX),
		(oX[N].drawRect = function(t, i, n) {
			t.beginPath(), t.rect(n.x - 0, n.y - 0, n[$t] + 0, n[Xt] + 0), (t[Ea] = 2 / i), (t[Oa] = _N), t.stroke();
		}),
		(oX[N][LI] = function(t, i, n) {
			t[Sf]();
			var e = 4 / i;
			t[_a](n.x + e, n.y),
				t.arc(n.x, n.y, e, 0, 2 * Math.PI, !1),
				(t.lineWidth = 1 / i),
				n.marked ? ((t[Oa] = QI), (t[pa] = qI)) : ((t.strokeStyle = _N), (t[pa] = "rgba(255, 255, 255, 0.8)")),
				t.fill(),
				t[La]();
		}),
		(oX[N][Ba] = function(i, n) {
			var t = this[nr];
			this[tL](i, n, t),
				this[Fs] &&
					this[Fs][It](
						function(t) {
							this[LI](i, n, t);
						}.bind(this)
					);
		}),
		(oX[N][kI] = function(s, h, r) {
			if (this[Fs]) {
				r = r || 20;
				var a,
					o = (r *= r);
				return (
					this[Fs][It](function(t) {
						t[iL] && (t.marked = !1);
						var i = t.x - s,
							n = t.y - h,
							e = i * i + n * n;
						e < r && e < o && ((o = e), (a = t));
					}),
					a && (a[iL] = !0),
					a || this[bI]
				);
			}
			return this[bI];
		}),
		(fX[N] = {
			getDefaultDrawStyles: function(t) {
				return {
					lineWidth: this[My][GN](v$.SHAPE_STROKE),
					strokeStyle: this[My][GN](v$[Cm]),
					fillStyle: this[My].getDefaultStyle(v$.SHAPE_FILL_COLOR),
				};
			},
			finish: function(t, i) {
				if (this._lG && this._lG[F]) {
					var n = this._lG,
						s = 0,
						h = 0,
						e = 0;
					n[It](function(i) {
						QB.isArray(i)
							? i.forEach(function(t) {
									(s += i.x), (h += i.y), e++;
							  })
							: ((s += i.x), (h += i.y), e++);
					}),
						(s /= e),
						(h /= e);
					var r = [];
					n[It](function(t, i) {
						if (0 != i)
							if (QB[W](t)) {
								var n = t[0],
									e = t[1];
								r.push(new fG(qB[$I], [n.x - s, n.y - h, e.x - s, e.y - h]));
							} else r[L](new fG(qB[Ko], [t.x - s, t.y - h]));
						else r[L](new fG(qB[nL], [t.x - s, t.y - h]));
					}),
						this.createElement(t, r, s, h),
						this[Ps](i);
				}
			},
			startdrag: function(t, i) {
				t[YI] = !0;
			},
			createElement: function(t, i, n, e) {
				return this[My][eL](t, i, n, e);
			},
			onstart: function(t, i) {
				var n = i[Kl](t);
				(this._fC = n), this.addPoint(n);
			},
			onmousemove: function(t, i) {
				this._fC && (this[DI] = i[Kl](t));
			},
			ondblclick: function(t, i) {
				if (this._fC) {
					if (this._lG[F] < 3) return void this[Ps](i);
					delete this._lG[this._lG[F] - 1], this[HI](t, i);
				}
			},
			isClosePath: !0,
		}),
		XR(fX, rX),
		(QB[sL] = fX),
		(cX.prototype = {
			isClosePath: !1,
			createElement: function(t, i, n, e) {
				return this[My].createLineByInteraction(t, i, n, e);
			},
			getDefaultDrawStyles: function() {
				return {
					lineWidth: P$[v$[Pm]],
					strokeStyle: P$[v$[Cm]],
					lineDash: this[My][GN](v$[Gm]),
					lineDashOffset: this.graph[GN](v$[Wm]),
					lineCap: this[My][GN](v$.LINE_CAP),
					lineJoin: this[My].getDefaultStyle(v$[KI]),
				};
			},
		}),
		XR(cX, fX),
		(QB[hL] = cX),
		(uX[N] = {
			destroy: function(t) {
				YR(this, uX, Ps, arguments), (t[RA] = ""), (this[CI] = null);
			},
			doDraw: function(t, i) {
				if (this[CI] && this.currentPoint) {
					var n, e;
					this[My][wA] && ((n = this[My][wA][Zd]), (e = this[My][wA][Fb])),
						(n = n || this.graph[pA] || QB[rL]),
						(e = e || this[My][Fb]);
					var s = n[jT] || QB.EdgeUI[jT],
						h = this[My].getUI(this[CI]);
					h && h.bodyBounds && ((h = h[iN][$e]), t.beginPath(), s(t, h, this[DI], e), this.styleDraw(t));
				}
			},
			canLinkFrom: function(t, i) {
				return t instanceof QW && i[BN](t);
			},
			canLinkTo: function(t, i) {
				return t instanceof QW && i.canLinkTo(t, this.start);
			},
			startdrag: function(t, i) {
				var n = t.getData();
				this[BN](n, i) && ((t.responded = !0), (this[CI] = n), (i[RA] = js), this[zI]());
			},
			ondrag: function(t, i) {
				this[CI] && (QB.stopEvent(t), (this[DI] = i[Kl](t)), this[xl]());
			},
			enddrag: function(t, i) {
				if (this.start) {
					this[xl]();
					var n = t[Os]();
					this[FI](n, i) && i[XI](this.start, n, t), this[Ps](i);
				}
			},
			getDefaultDrawStyles: function() {
				return {
					lineWidth: this[My][GN](v$[zm]),
					strokeStyle: this[My][GN](v$[CE]),
					lineDash: this[My].getDefaultStyle(v$[VI]),
					lineDashOffset: this[My].getDefaultStyle(v$.EDGE_LINE_DASH_OFFSET),
					lineCap: this[My][GN](v$[$m]),
					lineJoin: this.graph[GN](v$[KI]),
				};
			},
		}),
		XR(uX, rX),
		(QB.CreateSimpleEdgeInteraction = uX),
		(DF[aL] = !1),
		(lX[N] = {
			html: null,
			createHTML: function() {
				var i = x[Hn](oL);
				(i.className = fL),
					(i[Jn][ko] = cl),
					(i[Jn][Sw] = $e),
					(i.style[kh] = cL),
					(i[Jn][Gv] = uL),
					(i[Jn][_L] = "0px 0px 10px rgba(40, 85, 184, 0.75)"),
					(i[Jn][$O] = qh),
					(i[Jn][K_] = Ja);
				var n = this;
				return (
					(i[lL] = function(t) {
						n[dL](t);
					}),
					(i.onkeydown = function(t) {
						27 != t[y_] || n[bL]();
					}),
					(i[vL] = function(t) {
						if (13 == t[y_] || 10 == t[y_]) {
							if ((t.preventDefault(), t[yL] || t[Rs] || t[v_]))
								return (
									(function(t, i) {
										if (G == typeof t.selectionStart && G == typeof t.selectionEnd) {
											var n = t.value,
												e = t.selectionStart;
											(t.value = n.slice(0, e) + i + n[S](t[gL])), (t[gL] = t.selectionStart = e + i[F]);
										} else if (void 0 !== x[EL]) {
											var s = x[EL][xL]();
											(s[mN] = i), s[mL](!1), s[pL]();
										}
									})(i, p_),
									void n[dL](t)
								);
							n[wL]();
						}
					}),
					x[Za][ce](i),
					i
				);
			},
			setText: function(t, i) {
				(this.html[Ni] = t || ""),
					i && (this[lA][Jn][em] = i),
					(function(t) {
						if (qR) {
							var i = u.scrollX || u.pageXOffset,
								n = u[nA] || u[jl];
							return t.select(), u[TL](i, n);
						}
						t[pL]();
					})(this[lA]),
					this[NL](this.html);
			},
			onSizeChange: function(t) {
				t[AL], t.offsetHeight;
				var i = (function(t) {
					var n = x[Hn](zr)[Ao](Vr),
						i = getComputedStyle(t, null),
						e = i[ww];
					(e = e || i[dm] + R + i[em] + R + i.fontFamily), (n[ww] = e);
					var s = t.value.split(p_),
						h = parseInt(i[em]),
						r = 0,
						a = 0;
					return (
						QB[It](s, function(t) {
							var i = n[Tw](t)[$t];
							r < i && (r = i), (a += 1.2 * h);
						}),
						{ width: r, height: a }
					);
				})(t);
				return (t[Jn][$t] = i[$t] + 30 + jr), (t[Jn][Xt] = i.height + 10 + jr), i;
			},
			onValueChange: function(t) {
				var i = t[J_];
				this.onSizeChange(i), (i.style[Kt] = i.x - i[AL] / 2 + jr);
			},
			onClickOnWindow: function(t) {
				t[J_] != this[lA] && (DF.LABEL_EDITOR_SUBMIT_WHEN_LOST_FOCUS ? this[wL]() : this[bL]());
			},
			startEdit: function(t, i, n, e, s) {
				this[lA] || (this.html = this.createHTML()),
					this[OL] ||
						(this[OL] = function(t) {
							this.onClickOnWindow(t);
						}[Ie](this)),
					u.addEventListener(ts, this.stopEditWhenClickOnWindow, !0),
					(this.callback = s),
					(this.html.x = t),
					(this.html.y = i),
					(this[lA][Jn][$O] = nO),
					_X(this[lA], t, i),
					this.setText(n, e || 10),
					_X(this.html, t, i);
			},
			isEditing: function() {
				return qh != this[lA][Jn][$O];
			},
			cancelEdit: function() {
				this[wL](!0);
			},
			stopEdit: function(t) {
				if (this[IL]()) {
					u[De](ts, this.stopEditWhenClickOnWindow);
					var i = this[lA][Ni];
					!t && this.callback && this.callback(i), (this[lA].style[$O] = qh), (this.html[Ni] = null), (this.callback = null);
				}
			},
			destroy: function() {
				this.html && x[Za][Cn](this.html);
			},
		}),
		(QB[LL] = lX),
		(dX.prototype = {
			destroy: function(t) {
				t.labelEditor && (t[ML][Ps](), delete t.labelEditor);
			},
			ondblclick: function(t, i) {
				var n = t[Os]();
				if (n) {
					if (!1 !== n.dblclickable) {
						if (i[CN] && i[SL](n)) {
							var e = i[xo](t);
							if (e instanceof L$ && !1 !== e.editable) {
								var s = i[ML];
								s || (i[ML] = s = new lX());
								var h = e[No]();
								return (
									(h = (function(t, i, n) {
										(t += u.pageXOffset), (i += u[jl]);
										var e = n[ee]();
										return { x: t + e.left, y: i + e.top };
									})((h = i[Xd](h.x + h.width / 2, h.y + h[Xt] / 2)).x, h.y, i[lA])),
									void i[DL](n, e, s, h)
								);
							}
						}
						var r = n instanceof o$,
							a = n instanceof jW && n[PL]();
						if (!n._4B || (!$B(t) && (r || a)))
							return r
								? ((n[Ud] = !n[Ud]), void this.graph[LN](new DX(this[My], DX[Iv], t, n)))
								: void (a && this[My][CL](n) && this[My][LN](new DX(this.graph, DX.EDGE_BUNDLE, t, n)));
						i[Av] = n;
					}
				} else {
					if (i[Av]) return void i[RL]();
					if (i.enableDoubleClickToOverview) {
						var o = i[FL] || 1;
						Math.abs(i.scale - o) < 1e-4 ? i[zN]() : i[BL](o);
					}
				}
			},
		}),
		(bX.prototype = {
			onkeydown: function(t, i) {
				if (i.editable) {
					var n = t[y_];
					if (8 == n || 46 == n || 127 == n) return i.removeSelectionByInteraction(t), void EF(t);
					$B(t) && ((67 != n && 86 != n && 90 != n && 89 != n) || EF(t));
				}
			},
		}),
		(QB[kL] = bX),
		(vX.prototype = {
			onkeydown: function(t, i) {
				if (t[Cs] && 83 == t.keyCode) {
					var n = i[GL](i[Na], i.viewportBounds),
						e = u[WL]()[$L];
					e[XL] = HL + n[$t] + YL + n[Xt];
					var s = e[Hn](Ha);
					(s.src = n[Qi]), e[Za].appendChild(s), EF(t);
				}
			},
		}),
		(gX[N] = {
			onkeydown: function(t, i) {
				$B(t) ||
					(37 == t[y_]
						? (this._6I(i, 1, 0), EF(t))
						: 39 == t.keyCode
						? (this._6I(i, -1, 0), EF(t))
						: 38 == t[y_]
						? (this._6I(i, 0, 1), EF(t))
						: 40 == t.keyCode && (this._6I(i, 0, -1), EF(t)));
			},
			_6I: function(t, i, n) {
				t[vO](i, n);
			},
			onstart: function(t, i) {
				this._mI && this[Ps](i);
			},
			_mI: !(yX.prototype = {
				destroy: function(t) {
					delete this[JL], delete this.currentDraggingElement;
				},
				_2F: function(i) {
					var n = new PF();
					return (
						i.selectionModel[It](function(t) {
							i[fA](t) && i[rA](t) && n.add(t);
						}, this),
						n
					);
				},
				onstart: function(t, i) {
					this[ZL] && this[Ps](i);
				},
				startdrag: function(t, i) {
					if (!(t[YI] || (t[Ge] && 1 != t[Ge].length))) {
						var n = t[Os]();
						if (n && i[UL](n) && i[fA](n)) {
							(t[YI] = !0), (this[ZL] = n), (this.draggingElements = this._2F(i));
							var e = new DX(i, DX.ELEMENT_MOVE_START, t, this[ZL], this.draggingElements[kn]);
							!1 !== i[jL](e) ? i[LN](e) : this[Ps](i);
						} else this[Ps](i);
					}
				},
				ondrag: function(t, i) {
					if (this[ZL])
						if (t[Ge] && 1 != t.touches.length) this.enddrag(t, i);
						else {
							mF(t);
							var n = t.dx,
								e = t.dy,
								s = i.scale;
							(n /= s), (e /= s);
							var h = new DX(i, DX[zL], t, this[ZL], this[JL][kn]);
							i[VL](this[JL][kn], n, e), i[LN](h);
						}
				},
				enddrag: function(t, i) {
					if (this.currentDraggingElement) {
						if (this.draggingElements && this.draggingElements[F]) {
							if (t.shiftKey) {
								var s,
									n = i[Kl](t),
									h = n.x,
									r = n.y;
								i[KL](function(t) {
									var i = t[Qi];
									if (!this.draggingElements[Zt](i) && t[Md][zt](h - t.x, r - t.y) && t[xo](h, r, 1)) {
										if (i instanceof QB[mA]) {
											if (!i[Jd]) return;
											for (var n = this[JL][F]; 0 < n--; ) {
												var e = this.draggingElements.get(n);
												if (e instanceof QB[pN] && e[QL](i)) return;
											}
											return (s = i), !1;
										}
										return (i[Jd] || (i._jZ() && i[Ud])) && (s = i), !1;
									}
								}, this),
									s &&
										this.draggingElements[It](function(t) {
											for (var i = t[Fi]; i; ) {
												if (this.draggingElements[Zt](i)) return;
												i = i.parent;
											}
											t[Fi] = s;
										}, this);
							}
							var e = new DX(i, DX[qL], t, this[ZL], this.draggingElements[kn]);
							i.onInteractionEvent(e);
						}
						this[Ps](i);
					}
				},
				onpinch: function(t, i) {
					this.currentDraggingElement && this[Ns](t, i);
				},
				step: 1,
				onkeydown: function(t, i) {
					var n, e;
					if (
						$B(t) &&
						(37 == t[y_] ? (n = -1) : 39 == t[y_] ? (n = 1) : 38 == t.keyCode ? (e = -1) : 40 == t[y_] && (e = 1), n || e)
					) {
						var s = this._2F(i)[kn];
						if (0 != s.length) {
							EF(t), (n = n || 0), (e = e || 0);
							var h = this[tM] / i[Na],
								r = new DX(i, DX.ELEMENT_MOVE_END, t, null, s);
							i.moveElements(s, n * h, e * h), i[LN](r);
						}
					}
				},
			}),
			startdrag: function(t, i) {
				if (!t.responded) {
					i.stopAnimation(), (t.responded = !0), (this._mI = !0), (i.cursor = GB);
					var n = new DX(i, DX.PAN_START, t);
					i.onInteractionEvent(n);
				}
			},
			ondrag: function(t, i) {
				this._mI && i[Ta](t.dx || 0, t.dy || 0);
			},
			enddrag: function(t, i) {
				if (this._mI) {
					if (!1 !== i[iM]) {
						var n = t.vx,
							e = t.vy;
						(0.1 < Math.abs(n) || 0.1 < Math.abs(e)) && i[vO](n, e);
					}
					this.destroy(i);
					var s = new DX(i, DX[nM], t);
					i[LN](s);
				}
			},
			startpinch: function(t, i) {
				i[$A](!0);
			},
			onpinch: function(t, i) {
				this._mI = !0;
				var n = t.dScale;
				if (n) {
					var e = i.globalToLocal(t.center);
					i[QN](n, e.x, e.y, !1);
				}
			},
			endpinch: function(t, i) {
				i[$A](!1);
			},
			destroy: function(t) {
				(this._mI = !1), (t.cursor = null);
			},
		}),
		(EX.prototype = {
			onDataPropertyChange: function(t) {
				this[My][HN](function() {
					this._lE();
				}, this);
			},
			destroy: function() {
				(this[My][RA] = null),
					this[yI] && delete this.element[eM],
					(this[sM] = !1),
					delete this[Pb],
					delete this._oWH,
					delete this[hM],
					YR(this, EX, Ps, arguments);
			},
			_oWG: null,
			_61: function(t) {
				(this[Pb] = t), this.invalidate();
			},
			isEndPointEditable: function(t, i) {
				return this[My][rM](t, i);
			},
			drawPoint: function(t, i, n) {
				(i[aM] && !this.isEndPointEditable(this.element, i[oM])) ||
					(t[Sf](),
					i[fM]
						? t[nr](i.x - this[cM] / n, i.y - this[cM] / n, (this[cM] / n) * 2, (this.handlerSize / n) * 2)
						: t.arc(i.x, i.y, this[cM] / n, 0, 2 * Math.PI, !1),
					(t[Ea] = 1 / n),
					(t[Of] = []),
					(t.strokeStyle = hO),
					(t[pa] = "rgba(255, 255, 0, 0.8)"),
					t[La](),
					t.fill());
			},
			_hR: function(t, i, n, e) {
				e ? t[_a](i, n) : t[la](i, n);
			},
			doDraw: function(t, i) {
				this[uM](t, i);
			},
			drawLine: function(r, n) {
				if (this._oWG && this[Pb][F]) {
					var t = this._oWG;
					r[Vf](), this[yI] instanceof t$ && (r.translate(this[yI].x, this.element.y), this[yI].rotate && r[Mt](this[yI][Mt]));
					var a,
						o = [];
					r[Sf]();
					var f = t[F];
					t.forEach(function(t, i) {
						if (t[wi] != qB[tf])
							for (var n = !i || i == f - 1, e = 0, s = t.points; e + 1 < s[F]; ) {
								var h = { x: s[e], y: s[e + 1], isControlPoint: this._7B(t, e) };
								n && ((h.isEndPoint = !0), (h[oM] = 0 == i)),
									o.push(h),
									this._hR(r, h.x, h.y, null == a),
									(a = h),
									(e += 2);
							}
					}, this),
						(r.lineWidth = 1 / n),
						(r[Of] = [2 / n, 3 / n]),
						(r[Oa] = _M),
						r[La](),
						o[It](function(t, i) {
							this[LI](r, t, n, i);
						}, this),
						r.restore();
				}
			},
			invalidate: function() {
				this.topCanvas.invalidate();
			},
			_3K: function(t) {
				if (this[yI] != t && (this[yI] && this[Ps](), t && this.isEditable(t))) {
					var i = this._62(t, this[My]);
					i && (this[lM](t, !0), (t._editting = !0), (this[hM] = !0), this._61(i), this[zI]());
				}
			},
			_lE: function() {
				if (this.isShowing() && this[yI]) {
					var t = this._62(this[yI], this.graph);
					t ? this._61(t) : this[Ps](this[My]);
				}
			},
			_62: function(t, i) {
				if (i[SL](t)) {
					var n = t[xT] || [];
					n instanceof PF && (n = n[Lt]());
					var e = i[Is](t);
					if (e instanceof QB.EdgeUI) {
						var s = e[dT](i[Is](t[Ad])),
							h = e[dT](i[Is](t.toAgent)),
							r = s[$e],
							a = h.center,
							o = e[Sy](v$[ep]),
							f = e[Sy](v$[HE]);
						o && ((r.x += o.x || 0), (r.y += o.y || 0)),
							f && ((a.x += f.x || 0), (a.y += f.y || 0)),
							n[w](0, 0, new QB[dM](qB.SEGMENT_MOVE_TO, [r.x, r.y])),
							n[L](new QB[dM](qB[nL], [a.x, a.y]));
					}
					return n;
				}
			},
			_k2: function(t, i) {
				var n = { x: (t -= this[yI].x), y: (i -= this[yI].y) };
				return this[yI].rotate && k$(n, -this[yI].rotate), n;
			},
			isPointAddable: function(t, i) {
				return !0;
			},
			isPointRemovable: function(t, i, n) {
				return !0;
			},
			onclick: function(t, i) {
				if (i[CN] && t[yL] && this[yI]) {
					var n = this._hS(t, i);
					if (n && n[fM] && !1 !== this.isPointRemovable(this[yI], n, i))
						0 <= n.index && (this[yI][bM](n[qi]), ((e = new DX(i, DX[vM], t, this[yI]))[yM] = n), i[LN](e));
					else if (this[yI] == t.getData() && !1 !== this[gM](this[yI], i)) {
						var e,
							s = i[Kl](t);
						!1 !== i[Is](this[yI])[Or](s.x, s.y, this[cM] || 2) && (((e = new DX(i, DX[EM], t, this[yI])).point = s), i[LN](e));
					}
				}
			},
			isEditable: function(t) {
				return this[My][SL](t) && (t instanceof t$ || (t instanceof jW && (!t[Id]() || t.hasPathSegments())));
			},
			ondblclick: function(t, i) {
				if (i[CN]) {
					var n = t[Os]();
					n && n != this[yI] && !n[eM] ? this._3K(n) : this.destroy(i);
				} else this[yI] && this.destroy(i);
			},
			onstart: function(t, i) {
				if (((this[sM] = !0), i[CN])) {
					if (!t[YI])
						if (this.element && this._hS(t, i)) t[YI] = !0;
						else {
							var n = t.getData();
							n && i[xM](n) && n instanceof t$ ? this[yI] && n != this[yI] && this[Ps]() : this._3K(n);
						}
				} else this[yI] && this[Ps](i);
			},
			onrelease: function(t, i) {
				(this[sM] = !1), this[yI] && (this[hM] = !0);
			},
			_oWH: null,
			_hS: function(t, f) {
				var c = f.toLogical(t);
				this[yI] instanceof t$ && (c = this._k2(c.x, c.y));
				var u,
					i = f[Na],
					_ = this[cM] / i,
					l = this[Pb],
					d = l[F],
					b = this[yI] instanceof QB.Edge;
				if (
					(l[It](function(t, i) {
						for (var n = 0, e = t.points; n + 1 < e[F]; ) {
							var s = e[n],
								h = e[n + 1];
							if (CF(c.x, c.y, s, h) < _) {
								if (
									((u = { oldPoints: e[S](0), segment: t, index: i, pointIndex: n }),
									b && --u[qi],
									b && !xX(t) && (0 == i || i == l.length - 1))
								) {
									u[aM] = !0;
									var r = 0 == i,
										a = (u[oM] = r) ? QB[gA][ep] : QB.Styles[HE],
										o = f[Sy](this.element, a) || {};
									u[mM] = [o.x || 0, o.y || 0];
								}
								return (
									this._7B(t, n) &&
										((u[fM] = !0),
										0 < i && (u[pM] = l instanceof PF ? l[mt](i - 1) : l[i - 1]),
										i + 1 < d &&
											((u[wM] = l instanceof PF ? l[mt](i + 1) : l[i + 1]), u[wM][Fs] && (u[TM] = u[wM][Fs][S](0)))),
									!1
								);
							}
							n += 2;
						}
					}, this),
					!u || !u[aM] || this[rM](this.element, u[oM]))
				)
					return u;
			},
			_7B: function(t, i) {
				return i == t[Fs][F] - 2;
			},
			startdrag: function(t, i) {
				if (this[yI] && this[hM] && ((this[He] = this._hS(t, i)), this[He])) {
					this.removeDrawable(), (t[YI] = !0);
					var n = new DX(i, DX.POINT_MOVE_START, t, this.element);
					(n.point = this[He]), i[LN](n);
				}
			},
			onkeyup: function(t, i) {
				this[sM] && 16 != !t[y_] && this[yI] && this[He] && this[He][rs] && this._dL(this[He][rs].x, this[He].delta.y, i, t, !1);
			},
			onkeydown: function(t, i) {
				YR(this, EX, NM, arguments),
					this[sM] && this[yI] && this._oWH && t[v_] && this._oWH[rs] && this._dL(this._oWH[rs].x, this[He].delta.y, i, t, !0);
			},
			_dL: function(t, i, n, e, s) {
				var h = this[He],
					r = this.element,
					a = h.oldPoints,
					o = h[AM];
				if (h[aM]) {
					var f,
						c = h[oM] ? QB[gA][ep] : QB[gA][HE],
						u = { x: a[0] + t, y: a[1] + i };
					return r[pb](c, u), ((f = new DX(n, DX.POINT_MOVING, e, r))[yM] = h), void n[LN](f);
				}
				if (s && h.isControlPoint) {
					var _ = a[a.length - 2] + t,
						l = a[a[F] - 1] + i,
						d = h.prevSegment,
						b = h[wM],
						v = 20 / n[Na],
						y = Number[Vt],
						g = y,
						E = y,
						x = y;
					d && ((d = d.lastPoint), (y = Math.abs(_ - d.x)), (E = Math.abs(l - d.y))),
						b && ((b = b.lastPoint), (g = Math.abs(_ - b.x)), (x = Math.abs(l - b.y))),
						y < v && y < g ? (t += d.x - _) : g < v && g < y && (t += b.x - _),
						E < v && E < x ? (i += d.y - l) : x < v && x < E && (i += b.y - l);
				}
				if (h[fM] && xX(o)) {
					for (var m = o[Fs].length - 4; m < o[Fs].length; ) {
						var p = a[m] + t,
							w = a[m + 1] + i;
						(o[Fs][m] = p), (o[Fs][m + 1] = w), (m += 2);
					}
					if (h[wM] && xX(h[wM])) {
						var T = h[TM];
						(p = T[0] + t), (w = T[1] + i), (h[wM][Fs][0] = p), (h.nextSegment[Fs][1] = w);
					}
				} else (p = a[(m = h.pointIndex)] + t), (w = a[m + 1] + i), (o.points[m] = p), (o.points[m + 1] = w);
				r[kb](), ((f = new DX(n, DX.POINT_MOVING, e, r))[yM] = h), n[LN](f);
			},
			ondrag: function(t, i) {
				if (this.element && this._oWH) {
					var n = this[He],
						e = this[yI],
						s = t[Ws],
						h = t.totalDeltaY,
						r = i[Na];
					if (((s /= r), (h /= r), e.rotate)) {
						var a = { x: s, y: h };
						k$(a, -e[Mt]), (s = a.x), (h = a.y);
					}
					(n[rs] = { x: s, y: h }), this._dL(s, h, i, t, t[v_]);
				}
			},
			enddrag: function(t, i) {
				if (this[yI] && this[He]) {
					this.addDrawable(), this._lE();
					var n = new DX(i, DX.POINT_MOVE_END, t, this.element);
					(n[yM] = this[He]), i.onInteractionEvent(n);
				}
			},
			onmousemove: function(t, i) {
				this.element && (i[RA] = t.altKey && (this._hS(t, i) || this[yI] == t[Os]()) ? "crosshair" : null);
			},
		}),
		XR(EX, eX),
		(DF[OM] = 1),
		(DF[IM] = NF(3724541951)),
		(DF[LM] = NF(1430753245)),
		(qB[MM] = SM),
		(qB[DM] = PM),
		(DF[CM] = qB[MM]),
		(mX[N] = {
			onstart: function(t, i) {
				this._mI && this[Ps](i);
			},
			startdrag: function(t, i) {
				t[YI] || ((t.responded = !0), (this._mI = i.toLogical(t)), (i[RA] = js), (this._13Id = this[jO][zI](this._13, this).id));
			},
			ondrag: function(t, i) {
				if (this._mI) {
					mF(t), (this[RM] = i.toLogical(t)), this.invalidate();
					var n = new DX(i, DX[FM], t, i[Bn]);
					i[LN](n);
				}
			},
			enddrag: function(t, i) {
				if (this._mI) {
					this._h4Timer && (clearTimeout(this[BM]), (this._h4Timer = null)), this._h4(!0), this[Ps](i);
					var n = new DX(i, DX.SELECT_END, t, i[Bn]);
					i[LN](n);
				}
			},
			onpinch: function(t, i) {
				this._mI && this[Ns](t, i);
			},
			_13: function(t, i) {
				(t[Oa] = DF.SELECTION_RECTANGLE_STROKE_COLOR), (t[pa] = DF[LM]), (t[Ea] = DF[OM] / i);
				var n = this._mI.x,
					e = this._mI.y;
				t[nr](n, e, this[RM].x - n, this._end.y - e), t[Tf](), t.stroke();
			},
			invalidate: function() {
				this.invalidateFlag ? this.topCanvas[xl]() : ((this[Mv] = !0), (this[BM] = setTimeout(this._h4.bind(this), 100)));
			},
			_h4: function(t) {
				if (((this[Mv] = !1), (this[BM] = null), !this._mI || (iF && !t))) this.topCanvas[xl]();
				else {
					var i = Math.min(this._mI.x, this[RM].x),
						n = Math.min(this._mI.y, this[RM].y),
						e = Math.abs(this._mI.x - this._end.x),
						s = Math.abs(this._mI.y - this[RM].y);
					if (e && s) {
						var h = [],
							r = this.graph.scale,
							a = this[My].rectangleSelectionMode;
						if (
							(this[My].forEachVisibleUI(
								function(t) {
									t._k1 && this[My][aA](t[Ed]) && this[kM](i, n, e, s, t, r, a) && h.push(t[Qi]);
								}.bind(this)
							),
							this[My][Bn].set(h),
							this.topCanvas.invalidate(),
							!t)
						) {
							var o = new DX(this[My], DX[GM], null, this.graph[Bn]);
							this[My].onInteractionEvent(o);
						}
					} else this[My][Bn].clear();
				}
			},
			inRectangle: function(t, i, n, e, s, h, r) {
				var a = s[No]();
				return (
					!!YF(t, i, n, e, a.x, a.y, a.width, a[Xt]) ||
					((r = r || DF.RECTANGLE_SELECTION_MODE) != qB[DM] &&
						(function(t, i, n, e, s, h) {
							(t -= s.$x), (i -= s.$y);
							var r = s._hN.intersection(t, i, n, e);
							if (!r) return !1;
							(t = r.x * h),
								(i = r.y * h),
								(n = r[$t] * h),
								(e = r.height * h),
								(n = Math.round(n) || 1),
								(e = Math[tr](e) || 1);
							var a = fk(),
								o = a[zr];
							o[$t] < n || o[Xt] < e ? ((o[$t] = n), (o[Xt] = e)) : (a[Jf](1, 0, 0, 1, 0, 0), a[fd](0, 0, n, e)),
								a[Jf](1, 0, 0, 1, -t - s.$x * h, -i - s.$y * h),
								a[Na](h, h),
								s._lD(a, 1);
							var f = _k(a, 0, 0, n, e);
							if (!f) return !1;
							for (var c = (f = f.data)[F] / 4; 0 < c--; ) if (0 < f[4 * c - 1]) return !0;
							return !1;
						})(t, i, n, e, s, h))
				);
			},
			destroy: function(t) {
				(this._mI = null), (t[RA] = null), this._13Id && (this[jO][pI](this[WM]), delete this[WM], this[jO][xl]());
			},
		});
	var pX = UR({
		super: mX,
		onstart: null,
		startdrag: null,
		ondrag: null,
		enddrag: null,
		accept: function(t, i, n) {
			return !1 !== n[$M];
		},
		oncontextmenu: function(t, i) {
			i[XM] || mF(t);
		},
		onstart2: function(t, i) {
			mX.prototype[ys][b](this, arguments);
		},
		startdrag2: function(t, i) {
			t.responded || (i.popupmenu && i.popupmenu[HM] instanceof Function && i[XM][HM](), mX[N].startdrag.apply(this, arguments));
		},
		ondrag2: function(t, i) {
			mX[N][ws][b](this, arguments);
		},
		enddrag2: function(t, i) {
			mX[N].enddrag.apply(this, arguments);
		},
	});
	function wX(t) {
		HR(this, wX, arguments), (this[cM] = uF ? 8 : 4), (this._rotateHandleLength = uF ? 30 : 20);
	}
	function TX(t, i) {
		var n = new JF();
		return (
			n.addPoint(pG.call(t, { x: i.x, y: i.y })),
			n.addPoint(pG.call(t, { x: i.x + i.width, y: i.y })),
			n[Or](pG[m](t, { x: i.x + i[$t], y: i.y + i[Xt] })),
			n[Or](pG.call(t, { x: i.x, y: i.y + i[Xt] })),
			n
		);
	}
	function NX(t) {
		this.graph = t;
	}
	function AX() {}
	function OX(t) {
		this[My] = t;
	}
	function IX(t) {
		this[My] = t;
	}
	function LX(t) {
		(this._kT = t),
			(this.action = function(t) {
				if (
					(this._mE &&
						(this[WS] ? (cancelAnimationFrame(this._mE), (this[WS] = null)) : clearTimeout(this._mE), (this._mE = null)),
					!0 !== t && !1 !== t)
				)
					return t
						? void (this._mE = setTimeout(
								function() {
									this._kT(), (this._mE = null);
								}[Ie](this),
								t
						  ))
						: ((this[WS] = !0),
						  void (this._mE = requestAnimationFrame(
								function() {
									this._kT(), (this._mE = null), (this[WS] = null);
								}[Ie](this)
						  )));
				this._kT();
			});
	}
	function MX(t) {
		this.graph = t;
	}
	function SX(t) {
		this[My] = t;
	}
	function DX(t, i, n, e, s) {
		(this[pi] = t), (this[wi] = JS), (this[Ti] = i), (this[X] = n), (this[Qi] = e), (this[kn] = s);
	}
	function PX(t) {
		(this._4L = {}), (this._mF = t), this._mF._1E[Vi](this[pd], this), (this[ZS] = qB.INTERACTION_MODE_DEFAULT);
	}
	(sX = Math.PI / 4),
		(wX.prototype = {
			_fF: !1,
			_fH: !1,
			onDataPropertyChange: function(t) {
				this[My][HN](function() {
					this[YM]();
				}, this);
			},
			ondblclick: function(t, i) {
				this[yI] && this[Ps](i);
			},
			destroy: function(t) {
				(t.cursor = null),
					delete this._dN,
					delete this[ew],
					delete this[He],
					delete this[hM],
					delete this._lG,
					delete this._rotatePoint,
					delete this._fH,
					delete this._fF,
					delete this[JM],
					YR(this, wX, Ps, arguments);
			},
			_dN: null,
			_lG: null,
			_96: function(t) {
				this._dN = t;
				var i = this._dN.x,
					n = this._dN.y,
					e = this._dN[$t],
					s = this._dN[Xt];
				if ((this.element instanceof o$ && this.element[Ud], this._fH)) {
					var h = [];
					h[L]({ x: i, y: n, p: UF.LEFT_TOP, cursor: ZM, rotate: 5 * sX }),
						h[L]({ x: i + e / 2, y: n, p: UF[ui], cursor: UM, rotate: 6 * sX }),
						h.push({ x: i + e, y: n, p: UF[bi], cursor: jM, rotate: 7 * sX }),
						h[L]({ x: i, y: n + s / 2, p: UF[oi], cursor: zM, rotate: 4 * sX }),
						h.push({ x: i, y: n + s, p: UF[ci], cursor: jM, rotate: 3 * sX }),
						h[L]({ x: i + e, y: n + s / 2, p: UF.RIGHT_MIDDLE, cursor: zM, rotate: 0 }),
						h[L]({ x: i + e / 2, y: n + s, p: UF.CENTER_BOTTOM, cursor: UM, rotate: 2 * sX }),
						h.push({ x: i + e, y: n + s, p: UF.RIGHT_BOTTOM, cursor: ZM, rotate: sX }),
						(this._lG = h);
				}
				this._fF ? (this._rotatePoint = { x: i + e / 2, y: n, cursor: VM }) : (this[KM] = null), this.invalidate();
			},
			_fJ: function(t, i, n, e) {
				t[Sf]();
				var s = (this.handlerSize - 1) / e;
				t.rect(i - s, n - s, 2 * s, 2 * s),
					(t[Ea] = 1 / e),
					(t[Of] = []),
					(t[Oa] = hO),
					(t[pa] = "rgba(255, 255, 255, 0.8)"),
					t[La](),
					t[Tf]();
			},
			_64: function(t, i, n, e, s, h) {
				(s = s || this[cM]),
					(h = h || QM),
					t[Sf](),
					(s /= e),
					t.arc(i, n, s, 0, 2 * Math.PI, !1),
					(t.lineWidth = 1 / e),
					(t.lineDash = []),
					(t[Oa] = hO),
					(t.fillStyle = h),
					t.stroke(),
					t.fill();
			},
			_k2: function(t, i) {
				var n = { x: (t -= this.element.x), y: (i -= this[yI].y) };
				return this[yI][Mt] && k$(n, -this.element[Mt]), n;
			},
			doDraw: function(i, n) {
				if (this._dN) {
					if ((i[Vf](), i[Ta](this[yI].x, this[yI].y), this[yI][Mt] && i.rotate(this[yI][Mt]), this._rotatePoint)) {
						this._64(i, 0, 0, n, 3, qM);
						var t = this[KM].x,
							e = this[KM].y - this[tS] / n;
						i[Sf](),
							i.moveTo(t, this._rotatePoint.y),
							i[la](t, e),
							(i.lineWidth = 1 / n),
							(i.strokeStyle = _M),
							i[La](),
							this._64(i, t, e, n);
					}
					if (this._lG) {
						var s = this._dN.x,
							h = this._dN.y,
							r = this._dN[$t],
							a = this._dN[Xt];
						i.beginPath(),
							i.rect(s, h, r, a),
							(i[Ea] = 1 / n),
							(i[Of] = [2 / n, 3 / n]),
							(i[Oa] = _M),
							i[La](),
							RR(
								this._lG,
								function(t) {
									this._fJ(i, t.x, t.y, n);
								},
								this
							);
					}
					i[Sa]();
				}
			},
			_oWI: function() {
				if (this[iS]() && this[yI]) {
					var t = this[My].getUI(this[yI]);
					this._oXody = t[Za];
					var i = TX(this[ew], this[ew]._l7),
						n = TX(this[ew], this[ew]._8X);
					(this[JM] = new ZF(i.y - n.y, i.x - n.x, n[Bt] - i.bottom, n[kt] - i[kt])), this._96(n);
				}
			},
			_oZ5: function(t, i, n) {
				return i[xM](t);
			},
			_oZ6: function(t, i) {
				return (!(t instanceof o$) || !t[Ud]) && i.isRotatable(t);
			},
			_dP: function(t, i) {
				return t instanceof QW && i.isEditable(t);
			},
			onstart: function(t, i) {
				if (i.editable) {
					if (!t[YI]) {
						var n = i[Is](t),
							e = t[Os]();
						if (e != this[yI]) {
							if (this[yI]) {
								if (this._hS(t, i)) return void (t[YI] = !0);
								this[Ps](i);
							}
							if (e && !e._editting && this._dP(e, i)) {
								var s = this._oZ5(e, i, n),
									h = this[nS](e, i, n);
								(s || h) && (this[lM](e, !0), this[zI](), (this._fH = s), (this._fF = h), this._oWI());
							}
						}
					}
				} else this[yI] && this[Ps](i);
			},
			onrelease: function(t, i) {
				this.element &&
					((this[hM] = !0),
					this[zI](),
					i[HN](function() {
						this[YM]();
					}, this));
			},
			_oWH: null,
			_hS: function(t, i) {
				var n = i.toLogical(t);
				n = this._k2(n.x, n.y);
				var e,
					s = i[Na],
					h = this.handlerSize / s;
				if (this._rotatePoint) {
					var r = this[KM].x,
						a = this[KM].y - this[tS] / s;
					if (CF(n.x, n.y, r, a) < h) return this._rotatePoint;
				}
				if (this._lG && this._lG[F])
					return (
						RR(
							this._lG,
							function(t, i) {
								if (CF(n.x, n.y, t.x, t.y) < h) return (e = t), !1;
							},
							this
						),
						e
					);
			},
			onmousemove: function(t, i) {
				if (this[yI]) {
					var n = this._hS(t, i);
					if (n)
						if (n != this[KM] && this[yI][Mt]) {
							var e = n.rotate + this[yI].rotate;
							i.cursor = (function(t) {
								t %= 2 * Math.PI;
								var i = Math[tr](t / sX);
								return 0 == i || 4 == i
									? "ew-resize"
									: 1 == i || 5 == i
									? "nwse-resize"
									: 2 == i || 6 == i
									? "ns-resize"
									: jM;
							})(e);
						} else i[RA] = n.cursor;
					else i.cursor = null;
				}
			},
			startdrag: function(t, i) {
				if (this[yI] && (this[pI](), this._oZanEdit && ((this[He] = this._hS(t, i)), this[He]))) {
					var n;
					if (((t.responded = !0), this[He] == this[KM]))
						return (
							(this[He][CI] = i.toLogical(t)),
							(this._oWH[Mt] = this.element.rotate || 0),
							((n = new DX(i, DX[eS], t, this[yI]))[Ni] = this.element[Mt]),
							void i[LN](n)
						);
					((n = new DX(i, DX.RESIZE_START, t, this[yI])).point = this._oWH), i[LN](n);
				}
			},
			_7D: function(t, r, a, i, n, e) {
				var s = this._dN,
					o = s.x,
					f = s.y,
					h = s.width,
					c = s[Xt];
				e && (i != h ? (n = (i * c) / h) : (i = (n * h) / c));
				var u = t.path[ET],
					_ = i / h,
					l = n / c,
					d = -o * _ + r,
					b = -f * l + a;
				u[It](function(t) {
					if (t.type != qB.SEGMENT_CLOSE) {
						var i = t.points;
						if (i && i[F])
							for (var n = 0, e = i.length; n < e; n += 2) {
								var s = i[n],
									h = i[n + 1];
								(i[n] = (s - o) * _ + r - d), (i[n + 1] = (h - f) * l + a - b);
							}
					}
				}),
					this._dN.set(r - d, a - b, i, n),
					t[oA](t.x + d, t.y + b),
					t[kb]();
			},
			_oWJ: function(t, i, n, e, s, h) {
				this._dN.set(i, n, e, s), (t[Bv] = { x: i, y: n, width: e, height: s });
			},
			_4J: function(t, i, n, e, s) {
				if (this.element instanceof o$ && this[yI][Ud]) return this._oWJ(this[yI], t, i, n, e, s);
				if (this[yI] instanceof t$) return this._7D(this.element, t, i, n, e, s);
				var h = this[ew] instanceof L$;
				if (!h && s) {
					var r = this._dN,
						a = this[ew][sS];
					n != r[$t] ? (e = (n * a[Xt]) / a[$t]) : (n = (e * a.width) / a[Xt]);
				}
				var o = this.element[ev],
					f = new $F(n - this[JM][Kt] - this[JM][kt], e - this[JM].top - this._insets[Bt]);
				if (
					(f.width < 1 && ((n = this[JM][Kt] + this[JM][kt] + 1), (f[$t] = 1)),
					f.height < 1 && ((e = this[JM].top + this[JM][Bt] + 1), (f[Xt] = 1)),
					h ? this[yI][pb](v$[Yg], f) : (this.element.size = f),
					o)
				) {
					var c = (_ = tB(o, n, e)).x + t - (this[ew][xm] || 0),
						u = _.y + i - (this[ew].offsetY || 0);
					this._dN.set(t - c, i - u, n, e),
						this.element.rotate && ((c = (_ = k$({ x: c, y: u }, this[yI].rotate)).x), (u = _.y)),
						(this[yI].x += c),
						(this.element.y += u);
				} else {
					var _;
					(c = (this._dN.x * n) / this._dN[$t] - t),
						(u = (this._dN.y * e) / this._dN[Xt] - i),
						this._dN.set(t + c, i + u, n, e),
						this[yI][Mt] && ((c = (_ = k$({ x: c, y: u }, this.element.rotate)).x), (u = _.y)),
						(this[yI].x -= c),
						(this[yI].y -= u);
				}
			},
			ondrag: function(t, i) {
				if (this[yI] && this[He]) {
					if (this._oWH == this._rotatePoint) {
						var n = i[Kl](t),
							e =
								((h = n.x),
								(r = n.y),
								(a = this[yI].x),
								(o = this[yI].y),
								(f = this[He][CI].x),
								(c = this[He][CI].y),
								Mk(a, o, h, r) - Mk(a, o, f, c));
						(e += this._oWH[Mt] || 0), t[v_] && (e = (Math.round((e / Math.PI) * 4) * Math.PI) / 4);
						var s = this.element[Mt];
						return (
							(this[yI][Mt] = e % (2 * Math.PI)),
							((d = new DX(i, DX[hS], t, this[yI]))[Pi] = s),
							(d[Ni] = this.element[Mt]),
							void i.onInteractionEvent(d)
						);
					}
					var h,
						r,
						a,
						o,
						f,
						c,
						u = t.dx,
						_ = t.dy,
						l = i.scale;
					(u /= l), (_ /= l), this[yI][Mt] && (k$((n = { x: u, y: _ }), -this[yI].rotate), (u = n.x), (_ = n.y));
					var d,
						b = this._oWH.p,
						v = this._dN,
						y = v.x,
						g = v.y,
						E = v[$t],
						x = v[Xt];
					b[ti] == jF
						? E <= u
							? ((y += E), (E = u - E || 1))
							: ((y += u), (E -= u))
						: b.horizontalPosition == zF && (E <= -u ? (y -= E = -u - E || 1) : (E += u)),
						b[ii] == VF
							? x <= _
								? ((g += x), (x = _ - x || 1))
								: ((g += _), (x -= _))
							: b[ii] == KF && (x <= -_ ? (g -= x = -_ - x || 1) : (x += _)),
						this._4J(y, g, E, x, t.shiftKey),
						((d = new DX(i, DX[rS], t, this[yI])).point = this[He]),
						i[LN](d);
				}
			},
			enddrag: function(t, i) {
				if (this[yI] && this[He]) {
					var n;
					if (this[He] == this[KM]) return ((n = new DX(i, DX.ROTATE_END, t, this[yI])).value = this[yI].rotate), void i[LN](n);
					((n = new DX(i, DX[aS], t, this.element)).point = this[He]), i[LN](n);
				}
			},
		}),
		XR(wX, eX),
		(QB.ResizeInteraction = wX),
		(NX[N] = {
			onstart2: function(t, i) {
				this[ys](t, i);
			},
			onstart: function(t, i) {
				if (!t[YI]) {
					var n = t[Os]();
					if ((n && !i[aA](n) && (n = null), n && $B(t))) {
						i[oS](n);
						var e = new DX(i, DX[fS], t, i[Bn]);
						i.onInteractionEvent(e);
					} else
						(n && i.selectionModel[UL](n)) ||
							(n ? (i[cS](n), i[uS](n)) : i[cS](null), (e = new DX(i, DX[fS], t, i[Bn])), i.onInteractionEvent(e));
				}
			},
			onkeydown: function(t, i) {
				27 != t[y_] ? $B(t) && 65 == t.keyCode && (i[_S](), EF(t)) : i[lS]();
			},
		}),
		(DF[dS] = 0),
		(DF[bS] = 1e3),
		(AX[vS] = yS),
		(AX[gS] = 0),
		(AX[ES] = 15),
		pB(it + AX.CLASS_NAME, {
			"user-select": qh,
			"background-color": xS,
			overflow: Ja,
			"box-shadow": "0 5px 10px rgba(136, 136, 136, 0.5)",
			color: cw,
			"pointer-events": qh,
			border: mS,
			padding: pS,
			display: nO,
			position: cl,
		}),
		(AX.getInstance = function() {
			var t = AX[wS];
			return t || (AX[wS] = new AX());
		}),
		(AX.show = function(t, i, n) {
			AX.getInstance()[TS](t, i, n);
		}),
		(AX[HM] = function() {
			AX[NS]()[HM]();
		}),
		(AX[N] = {
			getTooltipElement: function() {
				var t = this._nF;
				return t || (((t = x.createElement(Yn))[I] = AX.CLASS_NAME), (this._nF = t), x.body[ce](t)), t;
			},
			update: function(t, i) {
				if (this[iS]()) {
					var n = mN == i;
					t && !n && (t = t[Wn](/\n/g, AS));
					var e = this[OS]();
					n ? (e[IS] = t || "") : (e[LS] = t || ""),
						(s = e),
						(h = this[MS].x + AX[gS]),
						(r = this._info.y + AX.CURSOR_OFFSET_Y),
						(a = x[Q_]),
						(o = new JF(u[Zl], u[jl], a.clientWidth - 2, a[hd] - 2)),
						(f = s[AL]),
						(c = s[vI]),
						h + f > o.x + o[$t] && (h = o.x + o[$t] - f),
						r + c > o.y + o[Xt] && (r = o.y + o.height - c),
						h < o.x && (h = o.x),
						r < o.y && (r = o.y),
						(s.style[Kt] = h + jr),
						(s[Jn].top = r + jr);
				}
				var s, h, r, a, o, f, c;
			},
			setTooltip: function(t, i) {
				if (!t || !t.content) return (this[MS] = null), this._nF && (this._nF[Jn][$O] = qh), void (this._oWK = Date.now());
				(this[SS] = null),
					(this[MS] = t),
					(this.getTooltipElement()[Jn][$O] = ""),
					this[DS](this._info[PS], this[MS][wi]),
					isNaN(i) && (i = DF[dS]),
					i && this[CS](this.setTooltip[Ie](this, !1), i);
			},
			_oWK: null,
			_mE: null,
			stopTimer: function() {
				this._mE && (clearTimeout(this._mE), (this._mE = null));
			},
			startTimer: function(t, i) {
				this[RS](),
					(this._mE = setTimeout(
						function(t) {
							(this._mE = null), t();
						}.bind(this, t),
						i
					));
			},
			show: function(t, i, n) {
				this[iS]() || (this[SS] && Date.now() - this[SS] < 1e3)
					? this.setTooltip(t, n)
					: (isNaN(i) && (i = DF.TOOLTIP_DELAY), i ? this[CS](this[FS][Ie](this, t, n), i) : this[FS](t, n));
			},
			isShowing: function() {
				return this._nF && qh !== this._nF[Jn][$O];
			},
			hide: function() {
				this[RS](), this[iS]() && this[FS](!1);
			},
		}),
		(OX[N] = {
			onstart: function(t, i) {
				this[Ps](i);
			},
			_kO: null,
			onmousemove: function(t, i) {
				if (i[BS]) {
					var n = t[Os](),
						e = n ? i.getTooltip(n, t) : null;
					e ? AX.show({ target: n, content: e, type: n.tooltipType, x: t[Ul], y: t[zl] }, i[kS], i[GS]) : AX[HM]();
				}
			},
			destroy: function(t) {
				AX.hide();
			},
		}),
		(IX[N] = {
			destroy: function(t) {
				this[$S] && (this.delayAction = null);
			},
			onmousewheel: function(t, i) {
				if (!1 !== i[XS] && t.delta) {
					if ((QB[EN](t), i[$N](), i[PA])) {
						var n = this[$S];
						(n =
							n ||
							(this[$S] = new LX(function() {
								i.pauseRendering(!1);
							}))),
							i.pauseRendering(!0),
							n[HS](100);
					}
					i[YS](t, t.delta, !1);
				}
			},
		}),
		(MX.prototype = {
			onclick: function(t, i) {
				i[YS](t, !$B(t));
			},
		}),
		(SX[N] = {
			onclick: function(t, i) {
				i[YS](t, $B(t));
			},
		}),
		XR(DX, nB),
		(DX[US] = jS),
		(DX[zL] = zS),
		(DX[qL] = VS),
		(DX[EA] = KS),
		(DX.ELEMENT_REMOVED = QS),
		(DX[qS] = tD),
		(DX[iD] = nD),
		(DX.POINT_MOVE_END = eD),
		(DX[EM] = sD),
		(DX.POINT_REMOVE = hD),
		(DX[rD] = aD),
		(DX[rS] = oD),
		(DX[aS] = fD),
		(DX[eS] = cD),
		(DX.ROTATING = uD),
		(DX.ROTATE_END = _D),
		(DX[lD] = dD),
		(DX.PAN_END = bD),
		(DX[Iv] = vD),
		(DX.EDGE_BUNDLE = yD),
		(DX.SELECT = pL),
		(DX.SELECT_START = gD),
		(DX.SELECT_BETWEEN = ED),
		(DX[xD] = mD),
		(DX.LONG_CLICK = pD),
		OF(
			(PX[N] = {
				_oWL: function(t) {
					if (this[wD])
						switch (t[Ti]) {
							case uB[rn]:
								this[wD]._4O(t[Qi]);
								break;
							case uB[an]:
								this[wD]._7L(t.data);
						}
				},
				destroy: function() {
					delete this._mF, delete this._4L, this._interactionSupport && (this._interactionSupport._jO(), delete this[wD]);
				},
				_mF: null,
				_4L: null,
				defaultMode: null,
				_hU: function(t, i, n) {
					(this._4L[t] = new hX(i, n)), t == this[ZS] && this._interactionSupport._7N(i);
				},
				addCustomInteraction: function(t) {
					this[wD]._7(t);
				},
				removeCustomInteraction: function(t) {
					this[wD]._3(t);
				},
				_oH: function(t) {
					return this._4L[t] || CX[t];
				},
			}),
			{
				defaultCursor: {
					get: function() {
						if (this.currentInteractionMode) return this.currentInteractionMode.defaultCursor;
					},
				},
				currentMode: {
					get: function() {
						return this._oZurrentMode;
					},
					set: function(t) {
						this._oZurrentMode != t &&
							(this._oZurrentMode,
							this._interactionSupport || (this[wD] = new WB(this._mF)),
							(this._oZurrentMode = t),
							(this[TD] = this._oH(this[BA])),
							(this._mF[RA] = this.defaultCursor),
							this[TD] ? this._interactionSupport._7N(this[TD][ND](this._mF)) : this[wD]._7N([]));
					},
				},
			}
		);
	var CX = {};
	function RX(t) {
		this[My] = t;
	}
	(DF.registerInteractions = function(t, i, n) {
		var e = new hX(i, n);
		CX[t] = e;
	}),
		(qB[AD] = OD),
		(qB.INTERACTION_MODE_DEFAULT = lI),
		(qB[ID] = EL),
		(qB[LD] = MD),
		(qB[SD] = DD),
		(qB[PD] = CD),
		(qB[RD] = FD),
		(qB[BD] = kD),
		(qB[GD] = WD),
		DF[$D](qB[AD], [NX, gX, IX, vX, dX, OX, pX]),
		DF[$D](qB[PD], [bX, uX, NX, gX, IX, vX, OX]),
		DF.registerInteractions(qB[RD], [bX, EX, NX, aX, gX, IX, vX, OX]),
		DF[$D](qB.INTERACTION_MODE_CREATE_SHAPE, [bX, fX, NX, gX, IX, vX, OX]),
		DF[$D](qB[GD], [cX, NX, gX, IX, vX, OX]),
		DF[$D](qB[XD], [bX, EX, wX, NX, yX, gX, IX, vX, dX, OX, pX]),
		DF[$D](qB[ID], [bX, EX, wX, NX, yX, mX, gX, IX, vX, dX, OX]),
		DF[$D](qB[LD], [IX, vX, MX], BB),
		DF.registerInteractions(qB[SD], [IX, vX, SX], kB),
		(QB[HD] = gX),
		(QB[YD] = NX),
		(QB[JD] = yX),
		(QB[ZD] = IX),
		(QB[UD] = dX),
		(QB.ExportInteraction = vX),
		(QB[jD] = OX),
		(QB[zD] = mX),
		(QB[VD] = pX),
		(QB[KD] = EX),
		((QB[QD] = RX).prototype = {
			getNodeBounds: function(t) {
				return this.graph.getUIBounds(t);
			},
			isLayoutable: function(t, i) {
				return this[My][rA](t) && !1 !== t.layoutable;
			},
			getLayoutResult: function(t) {},
			updateLocations: function(t, i, n, e, s) {
				if (!0 !== i) {
					for (var h in t) {
						var r = t[h];
						r[qD][oA](r.x, r.y);
					}
					s && s.call(this, t);
				} else {
					if (
						(this.animate || (this[tP] = new QX()),
						n && (this.animate[sI] = n),
						e && (this[tP][rI] = e),
						(this[tP].locations = t),
						s)
					) {
						var a = s,
							o = this;
						s = function() {
							a[m](o, t);
						};
					}
					this[tP][CI](s);
				}
			},
			_hW: function(t) {
				var i,
					n,
					e,
					s = null;
				t && ((i = t[iP]), (s = t[Ly]), (n = t[sI]), (e = t[rI]));
				var h = this.getLayoutResult(t);
				return !!h && (this.updateLocations(h, i, n, e, s), h);
			},
			doLayout: function(t, i) {
				if (!this[My] || !0 === i) return this._hW(t);
				this.graph[HN](function() {
					this._hW(t);
				}, this);
			},
		}),
		(qB[nP] = 110),
		(qB[eP] = 120),
		(qB[sP] = 130),
		(qB[hP] = 210),
		(qB[rP] = 220),
		(qB.DIRECTION_MIDDLE = 230),
		(qB.DIRECTION_RIGHT_TOP = 111),
		(qB[aP] = 112),
		(qB[oP] = 121),
		(qB.DIRECTION_LEFT_BOTTOM = 122),
		(qB[fP] = 211),
		(qB[cP] = 212),
		(qB.DIRECTION_TOP_LEFT = 221),
		(qB[uP] = 222);
	var FX = _P,
		BX = lP;
	function kX(t) {
		return 100 <= t && t < 200;
	}
	function GX(t) {
		this[My] = t;
	}
	(qB[dP] = FX),
		(qB[bP] = vP),
		(qB[yP] = gP),
		(qB.LAYOUT_TYPE_TWO_SIDE = BX),
		(QB[EP] = kX),
		(GX[N] = {
			hGap: 50,
			vGap: 50,
			parentChildrenDirection: 210,
			layoutType: FX,
			defaultSize: { width: 50, height: 60 },
			getNodeSize: function(t) {
				if (this.graph._9L[Le]) {
					var i = this.graph.getUI(t);
					if (i) return i._hN;
				}
				return t[mo] && t[mo][hf] ? { width: t[mo][hf].width, height: t.image[hf][Xt] } : this[xP];
			},
			_eB: function(t, i) {
				var n = t.id;
				if (!(n in this._oX8) && this[mP](t)) {
					var e,
						s = this[pP](t);
					(e = s instanceof JF ? [-s.x, -s.y] : [s[$t] / 2, s.height / 2]), t[wP];
					var h = i ? this._oX8[i.id] : this[TP];
					this[NP][n] = new WX(this, this[AP](t), this[OP](t), this.getLayoutType(t), t[wP], h, t, s[$t], s[Xt], e);
				}
			},
			getHGap: function(t) {
				return t && vF(t[IP]) ? t[IP] : this[IP];
			},
			getVGap: function(t) {
				return t && vF(t.vGap) ? t[LP] : this[LP];
			},
			getLayoutType: function(t) {
				return t && t[MP] ? t[MP] : this[MP];
			},
			_oX8: null,
			_oZO: null,
			_mW: function() {
				(this[NP] = null), (this[TP] = null);
			},
			compareFn: null,
			getLayoutResult: function(t) {
				var i,
					n,
					e,
					s,
					h = this[My];
				t instanceof Object && ((i = t.x), (n = t.y), (h = t[SP] || this[My]), (e = t[hf]), (s = t[DP])),
					(this._oX8 = {}),
					(this[TP] = new WX(this)),
					this[TP]._oJ(this[IP], this[LP], this[wP], this[MP]);
				var r = {};
				return (
					tH(h, this._eB, this, !1, s) &&
						(this._oZO._hW(i || 0, n || 0, r), e && e.set(this[TP].x, this[TP].y, this._oZO[$t], this[TP][Xt])),
					this._mW(),
					r
				);
			},
			doLayout: function(t, i) {
				if (vF(t)) {
					var n = t,
						e = 0;
					vF(i) && (e = i), (t = { x: n, y: e }), (i = !0);
				}
				return YR(this, GX, PP, [t, i]);
			},
		}),
		XR(GX, RX);
	var WX = function(t, i, n, e, s, h, r, a, o, f) {
		(this._iW = t),
			(this._o5 = i || 0),
			(this._o6 = n || 0),
			(this[MP] = e),
			(this[wP] = s),
			(this[CP] = h) && h._iX(this),
			(this.node = r),
			(this._gE = a),
			(this._eD = o),
			(this[RP] = f);
	};
	function $X(t) {
		(this.graph = t), (this[FP] = {});
	}
	function XX(t, i, n, e) {
		(this[My] = t), vF(i) && (this[xi] = i), vF(n) && (this.gap = n), vF(e) && (this.startAngle = e);
	}
	(WX.prototype = {
		_iW: null,
		_oJ: function(t, i, n, e) {
			(this._o5 = t), (this._o6 = i), (this[wP] = n), (this.layoutType = e);
		},
		_9M: function() {
			this._hJ = [];
		},
		_o5: 0,
		_o6: 0,
		_hJ: null,
		_gE: 0,
		_eD: 0,
		layoutType: null,
		parentChildrenDirection: null,
		_iX: function(t) {
			this._hJ || (this._hJ = []), this._hJ[L](t);
		},
		_eF: function(i, n, t, e, s) {
			var h = new JF();
			return (
				t(
					this._hJ,
					function(t) {
						t._45(i, n), h.add(t), e ? (i += t[$t] + this._o5) : (n += t[Xt] + this._o6);
					},
					this
				),
				h
			);
		},
		_9N: function(n, e, t, s, i) {
			var h,
				r = s ? this._o5 : this._o6,
				a = s ? this._o6 : this._o5,
				o = s ? "width" : Xt,
				f = s ? "height" : $t,
				c = s ? "_gE" : BP,
				u = s ? "_eD" : kP,
				_ = s ? "hostDX" : GP,
				l = s ? "hostDY" : WP,
				d = new JF(),
				b = 0,
				v = 0,
				y = [],
				g = 0,
				E = 0;
			t(
				this._hJ,
				function(t) {
					var i = v <= E;
					(t[$P] = i ? (s ? 120 : 220) : s ? 110 : 210),
						t._45(n, e),
						i
							? (y[L](t), (b = Math.max(b, t[o])), (v += t[f] + a))
							: ((h = h || [])[L](t), (g = Math.max(g, t[o])), (E += t[f] + a));
				},
				this
			),
				(v -= a),
				(E -= a);
			var x = Math.max(v, E),
				m = r,
				p = 0;
			this[qD] &&
				(i && ((m += this[c] + r), x > this[u] ? (this[l] = (x - this[u]) / 2) : (p = (this[u] - x) / 2)),
				(this[_] = b + m / 2 - this[c] / 2));
			var w,
				T = p;
			return (
				RR(
					y,
					function(t) {
						s ? t[ca](b - t[o], T) : t[ca](T, b - t[o]), (T += a + t[f]), d.add(t);
					},
					this
				),
				h &&
					((T = p),
					(w = b + m),
					RR(
						h,
						function(t) {
							s ? t.offset(w, T) : t[ca](T, w), (T += a + t[f]), d.add(t);
						},
						this
					)),
				d
			);
		},
		offset: function(t, i) {
			(this.x += t), (this.y += i), (this.nodeX += t), (this[XP] += i), this._8G(t, i);
		},
		_oZP: function(t, i) {
			return 2 * this.cx - t - i - t;
		},
		_oZQ: function(t, i) {
			return 2 * this.cy - t - i - t;
		},
		_o7: function(t) {
			if (this._hJ && 0 != this._hJ.length) {
				if (t)
					return (
						this[qD] && (this.nodeX += this[HP](this[YP], this._gE)),
						void RR(
							this._hJ,
							function(t) {
								t[ca](this._oZP(t.x, t[$t]), 0);
							},
							this
						)
					);
				this.node && (this[XP] += this._oZQ(this[XP], this._eD)),
					RR(
						this._hJ,
						function(t) {
							t.offset(0, this[JP](t.y, t.height));
						},
						this
					);
			}
		},
		_8G: function(i, n) {
			this._hJ &&
				RR(
					this._hJ,
					function(t) {
						t.offset(i, n);
					},
					this
				);
		},
		_45: function(t, i) {
			if (((this.x = t || 0), (this.y = i || 0), this._hJ && 0 != this._hJ[F])) {
				if (this._iW && this._iW[ZP]) {
					var n = this._iW.compareFn;
					this._hJ[rl](function(t, i) {
						return n(t[qD], i.node);
					});
				}
				this._1U(this.x, this.y, this[MP]);
			} else this[qD] && ((this[$t] = this._gE), (this[Xt] = this._eD), (this[YP] = this.x), (this.nodeY = this.y));
		},
		_8H: function(i) {
			if (this.node) {
				var t = this[RP],
					n = t[0],
					e = t[1];
				i[this[qD].id] = {
					node: this.node,
					x: this[YP] + n,
					y: this.nodeY + e,
					left: this[YP],
					top: this[XP],
					width: this._gE,
					height: this._eD,
				};
			}
			this._hJ &&
				RR(
					this._hJ,
					function(t) {
						t._8H(i);
					},
					this
				);
		},
		_hW: function(t, i, n) {
			this._45(t, i), this._8H(n);
		},
		_1U: function(t, i, n) {
			var e,
				s = t,
				h = i;
			!this.parentChildrenDirection && this.parentBounds && (this[wP] = this[$P] || this[CP][wP]);
			var r = this.parentChildrenDirection,
				a = kX(r);
			if (this[qD]) {
				var o = 120 == r || 122 == r || 121 == r || 220 == r || 221 == r || 222 == r;
				(e = 130 == r || 230 == r) || (a ? (t += this._gE + this._o5) : (i += this._eD + this._o6));
			}
			var f,
				c,
				u,
				_ = this.node && this.node[UP] ? BR : RR,
				l = 0,
				d = 0;
			(f = n == BX ? this._9N(t, i, _, !a, e) : ((c = n == FX ? !a : vP == n), this._eF(t, i, _, c, e))) &&
				!f[mn]() &&
				((l = f[$t]), (d = f.height), this.add(f)),
				this[qD] &&
					((this[YP] = s),
					(this[XP] = h),
					this.hostDX !== M || this[GP] !== M
						? ((this[YP] += this[WP] || 0), (this[XP] += this[GP] || 0))
						: ((u = 210 == r || 220 == r || 120 == r || 110 == r ? 1 : 212 == r || 222 == r || 122 == r || 112 == r ? 0 : 2),
						  a
								? (1 == u ? (this[XP] += d / 2 - this._eD / 2) : 2 == u && (this[XP] += d - this._eD),
								  h > this[XP] && this[ca](0, h - this[XP]))
								: (1 == u ? (this.nodeX += l / 2 - this._gE / 2) : 2 == u && (this[YP] += l - this._gE),
								  s > this[YP] && this.offset(s - this[YP], 0))),
					this[aw](this[YP], this[XP], this._gE, this._eD),
					o && this._o7(a));
		},
		node: null,
		uiBounds: null,
	}),
		XR(WX, JF),
		($X[N] = {
			layoutDatas: null,
			isMovable: function(t) {
				return !this[FP][t.id];
			},
			_7F: !1,
			_3L: function() {
				(this._7F = !0), this[My]._1E[Vi](this[jP], this), this[My]._19[Vi](this._27, this);
			},
			_1L: function() {
				(this._7F = !1), this[My]._1E[wo](this[jP], this), this[My]._19[wo](this._27, this);
			},
			invalidateFlag: !0,
			invalidateLayoutDatas: function() {
				this[Mv] = !0;
			},
			resetLayoutDatas: function() {
				return (
					(this.invalidateFlag = !1),
					(this.layoutDatas = function() {
						var e,
							s,
							h = {},
							r = [],
							a = 0,
							o = {},
							f = 0;
						this[My][It](function(t) {
							if (this[mP](t))
								if (t instanceof QW) {
									var i = { node: t, id: t.id, x: t.x, y: t.y };
									for (this[zP] && this.appendNodeInfo(t, i), h[t.id] = i, r[L](i), a++, s = t[Fi]; s instanceof o$; ) {
										var n = (e = e || {})[s.id];
										(n = n || (e[s.id] = { id: s.id, children: [] }))[y][L](i), (s = s[Fi]);
									}
								} else t instanceof jW && !t[Id]() && t[Ad] && t[Od] && ((i = { edge: t }), (o[t.id] = i), f++);
						}, this);
						var t = {};
						for (var i in o) {
							var n = o[i],
								c = n[Zb],
								u = c[Ad],
								_ = c[Od],
								l = u.id + Zn + _.id,
								d = _.id + Zn + u.id;
							if (h[u.id] && h[_.id] && !t[l] && !t[d]) {
								var b = h[u.id],
									v = h[_.id];
								(n[yd] = b), (n.to = v), (t[l] = n), this[VP] && this[VP](c, n);
							} else delete o[i], f--;
						}
						return { groups: e, nodesArray: r, nodes: h, nodeCount: a, edges: o, edgeCount: f, minEnergy: this[KP](a, f) };
					}[m](this))
				);
			},
			_27: function(t) {
				DX[US] == t.kind
					? ((this[FP] = {}),
					  t[kn][It](function(t) {
							this.currentMovingNodes[t.id] = t;
					  }, this))
					: DX[qL] == t[Ti] && (this.currentMovingNodes = {});
			},
			_oWN: function(t) {
				this[QP]();
			},
			isRunning: function() {
				return this[qP] && this[qP]._fL();
			},
			getLayoutResult: function(t) {
				this.stop(), this[tC]();
				for (var i = this[iC](this[nC][eC] || 0, this.layoutDatas[sC] || 0), n = 0; n < i && !1 !== this[tM](!1); n++);
				var e = this.layoutDatas.nodes;
				return this[hC](), e;
			},
			_nJ: function() {
				return !1;
			},
			step: function(t) {
				if (!1 === t) return this._nJ(this.timeStep);
				(!this[Mv] && this[nC]) || this.resetLayoutDatas();
				var i = this._nJ(t),
					n = this.layoutDatas[rC];
				for (var e in n) {
					var s = n[e],
						h = s[qD];
					this[fA](h) ? h.setLocation(s.x, s.y) : ((s.x = h.x), (s.y = h.y), (s.vx = 0), (s.vy = 0));
				}
				return i;
			},
			onstop: function() {
				delete this[nC];
			},
			start: function(t) {
				if (this[aC]()) return !1;
				this._7F || this._3L(),
					this[oC] ||
						(this[oC] = function(t) {
							return this[tM](t);
						}[Ie](this)),
					this[QP](),
					(this[qP] = new HB(this[oC]));
				var i = this;
				return (
					this.timer._mI(function() {
						i.onstop(), t && t();
					}),
					!0
				);
			},
			stop: function() {
				this[qP] && (this.timer._nN(), this.onstop());
			},
			getMaxIterations: function(t, i) {
				return Math.min(1e3, 3 * t + 10);
			},
			minEnergyFunction: function(t, i) {
				return 10 + Math.pow(t + i, 1.4);
			},
			resetGraph: function() {
				this._7F || this._3L(), this[tC]();
			},
			destroy: function() {
				this[fC](), this._1L();
			},
		}),
		XR($X, RX),
		(QB[cC] = XX);
	var HX = uC,
		YX = _C,
		JX = lC;
	(qB[dC] = HX),
		(qB.ANGLE_SPACING_REGULAR = YX),
		(qB[bC] = vC),
		(qB[yC] = JX),
		(XX.prototype = {
			angleSpacing: HX,
			radiusMode: JX,
			gap: 4,
			radius: 50,
			startAngle: 0,
			_oX8: null,
			_oZO: null,
			_mW: function() {
				(this[NP] = null), (this[TP] = null);
			},
			getLayoutResult: function(t) {
				var i,
					n = 0,
					e = 0,
					s = this[My];
				t instanceof Object && ((n = t.cx || 0), (e = t.cy || 0), (s = t[SP] || this[My]), (i = t[hf])),
					(this[NP] = {}),
					(this[TP] = new ZX(this));
				var h = {};
				return (
					iH(s, this._eB, this) &&
						(this._oZO._hJ && 1 == this._oZO._hJ.length && (this[TP] = this[TP]._hJ[0]),
						this._oZO._gI(!0),
						this[TP]._6J(n, e, this.startAngle, h, i)),
					this._mW(),
					h
				);
			},
			_eB: function(t, i) {
				if (this.isLayoutable(t)) {
					var n = i ? this._oX8[i.id] : this[TP];
					this._oX8[t.id] = new ZX(this, t, n);
				}
			},
			defaultSize: 40,
			getRadius: function(t, i, n) {
				return this[xi];
			},
			getNodeSize: function(t, i, n) {
				if (this.graph._9L._oXW) {
					var e = this[My][Is](t);
					if (e) return (e._hN[$t] + e._hN[Xt]) / 2;
				}
				return this.defaultSize;
			},
			getGap: function(t, i, n) {
				return this.gap;
			},
			_37: function(t, i, n) {
				return this[pP](t, i, n) + this.getGap(t, i, n);
			},
		});
	var ZX = function(t, i, n) {
		(this[gC] = t), i && ((this._oC = i), (this.id = i.id)), n && (n._iX(this), (n._o9 = !1), (this._n6 = n._n6 + 1));
	};
	(LW = 2 * Math.PI),
		(ZX[N] = {
			_n3: 0,
			_n5: 0,
			_m3: 0,
			_gG: 0,
			_eG: 0,
			_n6: 0,
			_o9: !0,
			_oB: 0,
			_iY: 0,
			_hJ: null,
			_oC: null,
			_iX: function(t) {
				this._hJ || (this._hJ = []), this._hJ[L](t), (t[Fi] = this);
			},
			_j0: function(i) {
				(this._n5 = (this._n5 + i) % LW),
					this._hJ &&
						(1 != this._hJ.length
							? ((i = this._n5 + Math.PI),
							  RR(
									this._hJ,
									function(t) {
										t._j0(i);
									},
									this
							  ))
							: this._hJ[0]._j0(this._n5));
			},
			_9O: 0,
			_8I: function(t) {
				return (
					this._oC && (this._iY = this[gC]._37(this._oC, this._n6, this._o9) / 2),
					this._hJ
						? (this._iY,
						  (this._9O = this._hJ.length),
						  this._9O <= 2 || this[gC].angleSpacing == YX
								? function(t) {
										var i = this._9O,
											n = (2 * Math.PI) / i,
											e = 0,
											s = t ? 0 : 1 < i ? -n / 2 : 0;
										return (
											RR(
												this._hJ,
												function(t) {
													(t._n5 = s % LW), (s += n), (t._n3 = n);
													var i = t._gI();
													e < i && (e = i);
												},
												this
											),
											[e, n]
										);
								  }.call(this, t)
								: function(e) {
										var n,
											t = this._hJ[F],
											s = 0,
											h = 0;
										if (
											(RR(
												this._hJ,
												function(t) {
													var i = t._gI();
													i < 1 && (i = 1), (h += i), s < i && ((s = i), (n = t));
												},
												this
											),
											1 < t)
										) {
											var r = 0,
												a = {},
												o = h / t / 3;
											(h = 0),
												RR(
													this._hJ,
													function(t) {
														var i = t._oB;
														i < o && (i = o), (a[t.id] = i), (h += i);
													},
													this
												);
											var f = LW / h;
											RR(
												this._hJ,
												function(t, i) {
													var n = a[t.id] * f;
													0 === i && (r = e ? -n / 2 : -n), (t._n5 = r + n / 2), (t._n3 = n), (r += n);
												},
												this
											);
										}
										return [s, n._n3];
								  }[m](this, t))
						: null
				);
			},
			_gI: function(t) {
				var i = this._8I(t);
				if (!i) return (this._oB = this._iY);
				var n = i[0],
					e = i[1],
					s = this[gC][EC](this._oC, this._n6);
				if (
					(s < this._iY && (s = this._iY),
					(this._gG = s),
					this._iY + n > s && (s = this._iY + n),
					n && 1 < this._9O && e < Math.PI)
				) {
					var h = n / Math.sin(e / 2);
					s < h && (s = h);
				}
				return (
					(this._m3 = s),
					(this._oB = s + n),
					this._oC &&
						this._hJ &&
						this[gC][xC] == JX &&
						RR(
							this._hJ,
							function(t) {
								var i = t._oB;
								1 == t._9O && (i /= 2);
								var n = this._iY + i,
									e = t._n3;
								if (e && e < Math.PI) {
									var s = i / Math.sin(e / 2);
									i < s && (i = s);
								}
								i < n && (i = n), (t._eG = i);
							},
							this
						),
					(this._oC && !t) || this._j0(0),
					this._oB
				);
			},
			_6J: function(h, r, a, o, f) {
				if (
					(this._oC &&
						((o[this._oC.id] = { x: h, y: r, node: this._oC }),
						f && f.addRect(h - this._iY / 2, r - this._iY / 2, this._iY, this._iY)),
					this._hJ)
				)
					if (this._oC || 1 != this._hJ.length) {
						a = a || 0;
						var c = this._m3,
							u = this._gG;
						RR(
							this._hJ,
							function(t) {
								var i = c;
								t._eG && (i = Math.max(u, t._eG));
								var n = t._n5 + a,
									e = h + i * Math.cos(n),
									s = r + i * Math.sin(n);
								t._6J(e, s, a, o, f);
							},
							this
						);
					} else this._hJ[0]._6J(h, r, a, o, f);
			},
		}),
		XR(XX, RX);
	var UX = function(t) {
		HR(this, UX, arguments);
	};
	XR(UX, KX);
	var jX = function(t, i) {
		(this[mC] = t) == (this[pC] = i) ? ((this.isLooped = !0), (this._n7 = t._mB)) : (this._n7 = new PF()),
			(this._9Q = []),
			(this._j1 = DF.EDGE_BUNDLE_EXPANDED);
	};
	function zX(t) {
		(t.fx -= t.x * this[kC]), (t.fy -= t.y * this.attractive);
	}
	function VX(t) {
		if (0 != t.k) {
			var i = this._dQ,
				n = t.from,
				e = t.to,
				s = e.x - n.x,
				h = e.y - n.y,
				r = s * s + h * h,
				a = Math[St](r) || 0.1,
				o = (a - i) * t.k * this[GC],
				f = (o /= a) * s,
				c = o * h;
			(e.fx -= f), (e.fy -= c), (n.fx += f), (n.fy += c);
		}
	}
	function KX(t) {
		HR(this, KX, arguments);
	}
	(DF[wC] = !0),
		(jX[N] = {
			node1: null,
			node2: null,
			_n7: null,
			_j1: DF.EDGE_BUNDLE_EXPANDED,
			_9Q: null,
			_j2: null,
			agentEdge: null,
			_oZR: function(i, n, e) {
				this._n7[It](function(t) {
					if (!e || t[Sb] == e || t.fromAgent == e) return i[m](n, t);
				});
			},
			_6L: 0,
			_6N: 0,
			_kP: function(t, i) {
				if (!1 === this._n7.add(t)) return !1;
				i == this.node1 ? this._6L++ : this._6N++, this[Le] ? this._15(t) : (this[Le] = !0);
			},
			_eI: function(t, i) {
				if (!1 === this._n7[k](t)) return !1;
				i == this[mC] ? this._6L-- : this._6N--,
					this._15(t),
					this._n7[It](function(t) {
						(t[TC] = !0), (t[Gd] = !0);
					}, this);
			},
			_15: function(t) {
				(this._dHBindableFlag = !0), (this._6W = !0), (t._edgeBundleInvalidateFlag = !0), (t[Gd] = !0);
			},
			invalidate: function() {
				this._dH();
			},
			_dH: function() {
				this._6W ||
					((this._6W = !0),
					this._n7.forEach(function(t) {
						t[TC] = !0;
					}));
			},
			isEmpty: function() {
				return this._n7[mn]();
			},
			isPositiveOrder: function(t) {
				return this[mC] == t[Sb] || this[mC] == t[Ad];
			},
			canBind: function(t) {
				return t && this._6W && this[Mo](t), 1 < this._n7.length && 1 < this._9Q[F];
			},
			_jU: function(t) {
				return this._9Q[v](t);
			},
			getYOffset: function(t) {
				return this._j2[t.id];
			},
			_5D: function(t) {
				if (this.canBind()) {
					var i = {},
						n = this._9Q[F];
					if (!(n < 2)) {
						var e = 0,
							s = this._9Q[0];
						i[s.id] = 0;
						for (var h = 1; h < n; h++) (s = this._9Q[h]), (e += t[Sy](s, v$[fN]) || P$[v$[fN]]), (i[s.id] = e);
						if (!this[Id] && e) {
							var r = e / 2;
							for (h = 0; h < n; h++) i[(s = this._9Q[h]).id] -= r;
						}
						this._j2 = i;
					}
				} else this._j2 = {};
			},
			_oZT: function(t) {
				return this._j1 != t && ((this._j1 = t), this._dH(), !0);
			},
			reverseExpanded: function() {
				return this[NC](!this._j1);
			},
			_1B: function() {
				var i;
				(this._9Q[F] = 0),
					this._n7[It](function(t) {
						if (t[Ld]()) {
							if (!this[HT](t)) return void (i = i || [])[L](t);
							this._9Q[L](t);
						}
					}, this),
					i && (this._9Q = i[B](this._9Q));
			},
			_fT: function(t) {
				return t == this.agentEdge || !this[$T]() || this._j1;
			},
			validate: function(t) {
				(this._6W = !1),
					this._n7[It](function(t) {
						t[TC] = !1;
					}),
					this[AC] && (this._1B(), (this[AC] = !1)),
					1 < this._9Q[F] && this[OC] instanceof Function && this[OC](this._9Q);
				var i = this._j1,
					n = !this[$T]() || i;
				if (
					(RR(
						this._9Q,
						function(t) {
							(t._$p = !0), (t[IC] = n) && (t[Gd] = !0);
						},
						this
					),
					!n)
				)
					return this._oXA(this._9Q[0], t), (this[SA][IC] = !0), void (this.agentEdge[Gd] = !0);
				this._oXA(null, t), this._5D(t);
			},
			_oXA: function(t, i) {
				if (t != this[SA]) {
					var n = this.agentEdge;
					return (this.agentEdge = t), i && i._54(new eB(this, SA, t, n)), !0;
				}
			},
		}),
		OF(jX[N], {
			bindableEdges: {
				get: function() {
					return this._9Q;
				},
			},
			edges: {
				get: function() {
					return this._n7._l5;
				},
			},
			length: {
				get: function() {
					return this._n7 ? this._n7.length : 1;
				},
			},
			expanded: {
				get: function() {
					return this._j1;
				},
				set: function(t) {
					if (this._j1 == t) return !1;
					(this._j1 = t), this._dH();
				},
			},
		}),
		(KX[N] = {
			appendNodeInfo: function(t, i) {
				(i[LC] = t[WC] || 1), (i.fx = 0), (i.fy = 0), (i.vx = 0), (i.vy = 0);
			},
			appendEdgeInfo: function(t, i) {
				i.k = t[$C] || 1;
			},
			setMass: function(t, i) {
				(t[WC] = i), this[nC] && this[nC][rC] && (t = this[nC][rC][t.id]) && (t[LC] = i);
			},
			setElasticity: function(t, i) {
				(t.layoutElasticity = i), this.layoutDatas && this[nC][XC] && (t = this[nC][XC][t.id]) && (t.k = i);
			},
			_dQ: 50,
			_k6: 0.5,
			timeStep: 0.05,
			repulsion: 50,
			attractive: 0.1,
			elastic: 3,
			_nK: 1e3,
			_lH: function(t) {
				return this._nK + 0.3 * (t - this._nK);
			},
			_nJ: function(t, i) {
				Date.now();
				var n = this[nC][rC];
				for (var e in n) {
					var s = n[e];
					i && ((s.x += Math.random() - 0.5), (s.y += Math.random() - 0.5)), zX[m](this, s);
				}
				var h = this.layoutDatas.groups;
				if (h)
					for (var e in h) {
						var r = h[e][y],
							a = 0,
							o = 0;
						r[It](function(t) {
							(a += t.x), (o += t.y);
						}),
							(a /= r[F]),
							(o /= r[F]);
						var f = 10 * this.attractive;
						r[It](function(t) {
							(t.fx -= (t.x - a) * f), (t.fy -= (t.y - o) * f);
						});
					}
				var c = this[HC];
				for (var e in ((c =
					c ||
					(this._nbodyForce = (function() {
						var l = -1e6;
						function e(t, i) {
							(this.node = t), (this[Za] = i);
						}
						function t() {
							(this.stack = []), (this.popIdx = 0);
						}
						function i() {
							(this[Za] = null),
								(this.quads = []),
								(this[LC] = 0),
								(this[MC] = 0),
								(this[SC] = 0),
								(this[Kt] = 0),
								(this.top = 0),
								(this[Bt] = 0),
								(this.right = 0),
								(this[DC] = !1);
						}
						function g() {
							var t;
							return (
								n[b]
									? (((t = n[b]).quads[0] = null),
									  (t.quads[1] = null),
									  (t[PC][2] = null),
									  (t[PC][3] = null),
									  (t.body = null),
									  (t.mass = t.massX = t[SC] = 0),
									  (t.left = t[kt] = t.top = t[Bt] = 0),
									  (t[DC] = !1))
									: ((t = new i()), (n[b] = t)),
								++b,
								t
							);
						}
						function E(t, i) {
							var n = Math.abs(t.x - i.x),
								e = Math.abs(t.y - i.y);
							return n < 1e-8 && e < 1e-8;
						}
						function d(t) {
							for (x[CC](), x[L](m, t); !x.isEmpty(); ) {
								var i = x.pop(),
									n = i[qD],
									e = i.body;
								if (n[DC]) {
									var s = e.x,
										h = e.y;
									(n.mass = n[LC] + e.mass), (n.massX = n[MC] + e[LC] * s), (n[SC] = n.massY + e[LC] * h);
									var r = 0,
										a = n.left,
										o = (n[kt] + a) / 2,
										f = n.top,
										c = (n[Bt] + f) / 2;
									if (o < s) {
										r += 1;
										var u = a;
										o += (a = o) - u;
									}
									if (c < h) {
										r += 2;
										var _ = f;
										c += (f = c) - _;
									}
									var l = n.quads[r];
									l || (((l = g())[Kt] = a), (l.top = f), (l[kt] = o), (l[Bt] = c), (n.quads[r] = l)), x[L](l, e);
								} else if (n[Za]) {
									var d = n[Za];
									if (((n.body = null), (n.isInternal = !0), E(d, e))) {
										if (n[kt] - n[Kt] < 1e-8) return;
										do {
											var b = Math[Z](),
												v = (n.right - n[Kt]) * b,
												y = (n[Bt] - n.top) * b;
											(d.x = n[Kt] + v), (d.y = n.top + y);
										} while (E(d, e));
									}
									x.push(n, d), x[L](n, e);
								} else n[Za] = e;
							}
						}
						t[N] = {
							isEmpty: function() {
								return 0 === this[RC];
							},
							push: function(t, i) {
								var n = this[FC][this[RC]];
								n ? ((n[qD] = t), (n.body = i)) : (this[FC][this.popIdx] = new e(t, i)), ++this.popIdx;
							},
							pop: function() {
								if (0 < this[RC]) return this[FC][--this[RC]];
							},
							reset: function() {
								this[RC] = 0;
							},
						};
						var u = [],
							x = new t(),
							n = [],
							b = 0,
							m = g();
						return {
							init: function(t, i) {
								l = i;
								var n,
									e = Number[Vt],
									s = Number[Vt],
									h = Number[BC],
									r = Number[BC],
									a = t,
									o = a[F];
								for (n = o; n--; ) {
									var f = a[n].x,
										c = a[n].y;
									f < e && (e = f), h < f && (h = f), c < s && (s = c), r < c && (r = c);
								}
								var u = h - e,
									_ = r - s;
								for (
									_ < u ? (r = s + u) : (h = e + _), b = 0, (m = g())[Kt] = e, m[kt] = h, m.top = s, m[Bt] = r, n = o;
									n--;

								)
									d(a[n]);
							},
							update: function(t) {
								var i,
									n,
									e,
									s,
									h = u,
									r = 1,
									a = 0,
									o = 1;
								for (h[0] = m; r; ) {
									var f = h[a],
										c = f.body;
									--r,
										(a += 1),
										c && c !== t
											? ((n = c.x - t.x),
											  (e = c.y - t.y),
											  0 === (s = Math.sqrt(n * n + e * e)) &&
													((n = (Math[Z]() - 0.5) / 50),
													(e = (Math[Z]() - 0.5) / 50),
													(s = Math[St](n * n + e * e))),
											  (i = (l * c[LC] * t.mass) / (s * s)) < -1e3 && (i = -1e3),
											  (i /= s),
											  (t.fx = t.fx + i * n),
											  (t.fy = t.fy + i * e))
											: (f[LC] || (f[LC] = 1),
											  (n = f.massX / f[LC] - t.x),
											  (e = f[SC] / f[LC] - t.y),
											  0 === (s = Math[St](n * n + e * e)) &&
													((n = (Math[Z]() - 0.5) / 50),
													(e = (Math[Z]() - 0.5) / 50),
													(s = Math.sqrt(n * n + e * e))),
											  (f[kt] - f[Kt]) / s < 0.8
													? ((i = (l * f[LC] * t[LC]) / (s * s)) < -1e3 && (i = -1e3),
													  (i /= s),
													  (t.fx = t.fx + i * n),
													  (t.fy = t.fy + i * e))
													: (f[PC][0] && ((h[o] = f[PC][0]), (r += 1), (o += 1)),
													  f[PC][1] && ((h[o] = f.quads[1]), (r += 1), (o += 1)),
													  f[PC][2] && ((h[o] = f[PC][2]), (r += 1), (o += 1)),
													  f[PC][3] && ((h[o] = f[PC][3]), (r += 1), (o += 1))));
								}
							},
						};
					})()))[YC](this.layoutDatas[JC], -this[ZC] * this.repulsion * this[ZC]),
				n))
					c.update(n[e]);
				if (this[GC]) {
					var u = this[nC].edges;
					for (var e in u) VX[m](this, u[e]);
				}
				return this._nM(t);
			},
			_nM: function(t) {
				var i = this[nC][UC],
					n = (this[nC][jC], this[nC][rC]),
					e = ((t = this.timeStep), 0),
					s = this._k6;
				for (var h in n) {
					var r = n[h],
						a = r.fx / r[LC],
						o = r.fy / r[LC],
						f = (r.vx += a * t),
						c = (r.vy += o * t);
					(r.x += f * t), (r.y += c * t), e < i && (e += 2 * (f * f + c * c)), (r.fx = 0), (r.fy = 0), (r.vx *= s), (r.vy *= s);
				}
				return i <= (this.layoutDatas[jC] = e);
			},
		}),
		XR(KX, $X),
		(QB[zC] = KX);
	var QX = function(t) {
		this[VC] = t;
	};
	function qX(i, n, e, s, h, r) {
		if (n instanceof _B) return i(n, e, s, h, r), n;
		if (n instanceof J$) {
			var a = new PF();
			n._mFModel[It](function(t) {
				n[rA](t) && (t._jZ() && t._j1 && t.hasChildren() ? t.$location && (t.$location[Mv] = !1) : a.add(t));
			}),
				(n = a);
		} else if (Array.isArray(n)) n = new PF(n);
		else if (!(n instanceof PF)) throw new Error(eR);
		return (
			((o = n),
			(c = new PF()),
			o[It](function(t) {
				var i, n;
				t instanceof QW &&
					((n = !1),
					t[iR](function(t) {
						if (o.contains(t) && !t.isLooped()) return !(n = !0);
					}),
					n
						? !f &&
						  ((i = !1),
						  t[nR](function(t) {
								if (o[Zt](t) && !t[Id]()) return !(i = !0);
						  }),
						  i) &&
						  (f = t)
						: c.add(t));
			}),
			c[mn]() && f && c.add(f),
			(n = c))[It](function(t) {
				i(t, e, s, h, r);
			}),
			n
		);
		var o, f, c;
	}
	(QX[N] = {
		oldLocations: null,
		_gJ: null,
		duration: 700,
		animationType: jB[KC],
		_8J: function(t) {
			if (((this._gJ = t), (this[QC] = {}), t))
				for (var i in t) {
					var n = t[i].node;
					this[QC][i] = { x: n.x, y: n.y };
				}
		},
		setLocation: function(t, i, n) {
			t.setLocation(i, n);
		},
		forEach: function(t, i) {
			for (var n in this.locations) {
				var e = this[QC][n],
					s = this.locations[n];
				t.call(i, e, s);
			}
		},
		_m5: function(h, t, i, n) {
			this[It](function(t, i) {
				var n = i.node,
					e = t.x + (i.x - t.x) * h,
					s = t.y + (i.y - t.y) * h;
				this.setLocation(n, e, s);
			}, this);
		},
		stop: function() {
			this._oWnimate && this[qC]._nN();
		},
		start: function(t) {
			this[qC]
				? (this._oWnimate._nN(), (this[qC]._k9 = this.duration), (this[qC]._gCType = this[rI]), (this[qC][tR] = this[tR]))
				: (this._oWnimate = new zB(this._m5, this, this.duration, this[rI])),
				this[qC]._mI(t);
		},
	}),
		OF(QX.prototype, {
			locations: {
				get: function() {
					return this._gJ;
				},
				set: function(t) {
					this._gJ != t && this._8J(t);
				},
			},
		});
	var tH = function(t, i, n, e, s) {
			return qX(nH, t, i, n, e, s);
		},
		iH = function(t, i, n, e, s) {
			return qX(sH, t, i, n, e, s);
		};
	(a$[N][sR] = function(t, i, n, e) {
		tH(this, t, i, n, e);
	}),
		(a$[N].forEachByTopoBreadthFirstSearch = function(t, i, n, e) {
			t instanceof Object && 1 == arguments[F] && (i = t.scope), iH(this, t, i, n, e);
		}),
		(QB[sR] = tH),
		(QB.forEachByTopoBreadthFirstSearch = iH);
	var nH = function(t, i, n, e, s, h, r, a) {
		!(function i(n, e, s, h, r, a, o, t) {
			(n[hR] = a),
				h || e[m](s, n, t, o),
				eH(
					n,
					function(t) {
						i(t, e, s, h, r, a, o + 1, n);
					},
					t,
					r,
					a
				),
				h && e.call(s, n, t, o);
		})(t, i, n, e, s, {}, 0);
	};
	function eH(n, e, s, t, h) {
		t
			? n[ab](
					function(t) {
						var i = t[rR](n);
						i != s && i._marker != h && e(i, n);
					},
					this,
					!0
			  )
			: n[nR](function(t) {
					var i = t[Od];
					i != s && i[hR] != h && e(i, n);
			  });
	}
	var sH = function(t, i, n, e, s) {
		!(function t(i, e, s, h, r, a, o) {
			var f,
				c = i[F];
			i[It](function(t, i) {
				var n = t.v;
				(n[hR] = a),
					h || e.call(s, n, t[aR], o, i, c),
					eH(
						n,
						function(t) {
							(f = f || []), (t[hR] = a), f[L]({ v: t, _from: n });
						},
						n,
						r,
						a
					);
			}),
				f && t(f, e, s, h, r, a, o + 1),
				h &&
					i[It](function(t, i) {
						e[m](s, t.v, t[aR], o, i, c);
					});
		})([{ v: t }], i, n, e, s, {}, 0);
	};
	(QB[oR] = NF),
		(QB.log = MF),
		(QB.error = SF),
		(QB.trace = function(t) {
			u[nt] && console[fR](t);
		}),
		(QB.isIE = qR),
		(QB.isOpera = QR),
		(QB[cR] = nF),
		(QB.isGecko = eF),
		(QB.isFirefox = sF),
		(QB[uR] = rF),
		(QB[_R] = hF),
		(QB[lR] = aF),
		(QB[dR] = P$),
		(QB.Defaults = DF),
		(QB.Styles = v$),
		(QB.Consts = qB),
		(QB[bR] = xG),
		(QB.Graph = J$),
		(QB[vR] = c$),
		(QB[yR] = A$),
		(QB[gR] = D$),
		(QB.EdgeUI = S$),
		(QB[ER] = L$),
		(QB.ImageUI = I$),
		(QB[xR] = i$),
		(QB[mR] = cG),
		(QB[Zw] = jk),
		(QB.InteractionEvent = DX),
		(QB[pR] = YW),
		(QB[pN] = QW),
		(QB.Edge = jW),
		(QB[wR] = a$),
		(QB[TR] = jX),
		(QB.TreeLayouter = GX),
		(QB[To] = X_);
	var hH = NR;
	return (
		(QB[E_] = AR),
		(QB[w_] = OR),
		(QB[T_] = "Copyright Â© 2020 Qunee.com"),
		(QB.css = xB),
		(QB.IDrawable = { draw: function(t, i) {} }),
		(MF = function() {}),
		(QB[m_] = IR),
		QB
	);
})(window, document);
